Używanie operatora „or” w podstawowym zrozumieniu list w języku Python

Nov 26 2020

Pytanie: Jak mogę używać OR w zrozumieniu listy w Pythonie?

Chcę wyprowadzić dowolną liczbę z zakresu od 0 do 99, która jest podzielna przez 5 lub 7 bez reszty. Mam następujący kod:

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

ale to zwraca: 0, 35, 70, które są liczbami podzielnymi przez 5 i 7. Próbowałem też:

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

ale to zwraca True lub False dla każdej liczby, gdzie szukam samych liczb. Używając tego:

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

zgłasza błąd składniowy.

Przejrzałem kolejne strony, ale nie byłem w stanie zrozumieć, jak zastosować rozwiązania, jeśli zostały zaprezentowane. Każdy z nich wydawał się oferować niuanse mojego pożądanego rozwiązania, ale nie były tym, czego szukałem.

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

programiz.com/python-programming/list-comprehension

użyj-of-or-operator-in-python-lambda-function

nie-pojmowanie-listy-ze zrozumieniem-w-pythonie

czy istnieje-binarny-lub-operator-w-pythonie-który-działa-na-tablicach

jak-przekonwertować-ten-mój-kod na-rozumienie-listy

python-list-compryption-with-multiple-ifs

Odpowiedzi

1 WasifHasan Nov 26 2020 at 10:59

Nie używaj innego if!

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

Ponieważ ifjest to instrukcja, a to są wyrażenia, a następnie zrób ori użyj ifskrótu, aby sprawdzić.