Utilisation d'un opérateur 'ou' dans une compréhension de liste de base en python

Nov 26 2020

Question: Comment puis-je utiliser OR dans une compréhension de liste python?

Je cherche à générer un nombre compris entre 0 et 99 qui est divisible par 5 ou 7 sans reste. J'ai le code suivant:

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

mais cela renvoie: 0, 35, 70 qui sont les nombres divisibles par 5 et 7. J'ai aussi essayé:

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

mais cela renvoie Vrai ou Faux pour chaque nombre, où je cherche à obtenir les nombres eux-mêmes. En utilisant ceci:

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

renvoie une erreur de syntaxe.

J'ai parcouru les pages suivantes mais je n'ai pas pu comprendre comment appliquer les solutions si elles étaient présentées. Ils semblaient chacun offrir des nuances à la solution souhaitée, mais n'étaient pas ce que je recherchais.

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

programiz.com/python-programming/list-comprehension

utilisation-de-ou-opérateur-dans-la-fonction-lambda-python

Compréhension-de-liste-de-compréhension-en-python

y a-t-il-un-opérateur-binaire-ou-en-python-qui-fonctionne-sur-les-tableaux

comment-convertir-ce-mon-code-en-une-compréhension-de-liste

compréhension-de-liste-python-avec-plusieurs-ifs

Réponses

1 WasifHasan Nov 26 2020 at 10:59

N'en utilisez pas un autre if!

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

Parce que ifc'est une déclaration et ce sont des expressions, puis faites oret utilisez un ifraccourci pour vérifier.