Usando um operador 'ou' em uma compreensão de lista python básica

Nov 26 2020

Pergunta: Como posso usar OR em uma compreensão de lista python?

Estou procurando produzir qualquer número entre 0-99 que seja divisível por 5 ou 7 sem resto. Eu tenho o seguinte código:

numbers = [x for x in range(99) if x % 5 == 0 if x % 7 == 0]

mas isso retorna: 0, 35, 70 que são os números divisíveis por 5 e 7. Eu também tentei:

numbers = [x % 5 == 0 or x % 7 == 0 for x in range(99)]

mas isso retorna True ou False para cada número, onde procuro obter os próprios números. Usando isto:

numbers = [x for x in range(99) if x % 5 == 0 or if x % 7 == 0]

lança um erro de sintaxe.

Examinei as páginas a seguir, mas não consegui entender como aplicar as soluções apresentadas. Cada um deles parecia oferecer nuances para a solução desejada, mas não era o que eu procurava.

datacamp.com/community/tutorials/python-list-comprehension

programiz.com/python-programming/list-comprehension

use-of-or-operator-in-python-lambda-function

lista-não-compreensão-compreensão-em-python

existe um binário-ou-operador-em-python-que-funciona-em-matrizes

como-converter-este-meu-código-em-uma-lista-compreensão

python-list -eciation-with-multiple-ifs

Respostas

1 WasifHasan Nov 26 2020 at 10:59

Não use outro if!

numbers = [x for x in range(99) if (x % 5 == 0) or (x % 7 == 0)]
print(numbers)

Porque ifé uma declaração e essas são expressões, e então faça ore use uma ifabreviatura para verificar.