基本的なPythonリスト内包表記での「または」演算子の使用

Nov 26 2020

質問:Pythonリスト内包表記でORを使用するにはどうすればよいですか?

5または7で割り切れ、余りがない0〜99の任意の数値を出力しようとしています。私は次のコードを持っています:

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

しかし、これは0、35、70を返します。これは、5と7の両方で割り切れる数です。私も試しました。

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

しかし、これは各数値に対してTrueまたはFalseを返します。ここで、数値自体を取得しようとしています。これを使用する:

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

構文エラーをスローします。

次のページを見ましたが、提示された場合の解決策の適用方法を理解できませんでした。それらはそれぞれ、私の希望するソリューションにニュアンスを提供しているように見えましたが、私が探していたものではありませんでした。

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

programiz.com/python-programming/list-comprehension

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

not-comprehending-list-comprehension-in-python

is-there-a-binary-or-operator-in-python-that-works-on-arrays

how-to-convert-this-my-code-into-a-list-comprehension

python-list-comprehension-with-multiple-ifs

回答

1 WasifHasan Nov 26 2020 at 10:59

別のものを使用しないでくださいif

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

ifはステートメントであり、それらは式であるため、実行しorif省略形を使用してチェックします。