ホームページ >バックエンド開発 >Python チュートリアル >Python で `a == x or y or z` が常に True と評価されるのはなぜですか?

Python で `a == x or y or z` が常に True と評価されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-31 04:35:17752ブラウズ

Why Does `a == x or y or z` Always Evaluate to True in Python?

「a == x or y or z」の誤謬

変数を複数の値と比較しようとするとき、次のように使用したくなります。 Python の論理演算子:

if a == x or y or z:  # Incorrect

ただし、この式は常に次のように評価されます。 a の値に関係なく、真です。これは、このコンテキストの「or」演算子が期待どおりに動作しないためです。

「or」演算子の仕組み

Python の「or」演算子 (|)いずれかのオペランドが True の場合、True と評価されます。したがって、上記の式では、x、y、または z のいずれかが常に True (Python では空でない値は True) であるため、式は a.

複数の値と比較する正しい方法

変数を複数の値と正しく比較するには、いくつかの方法があります。オプション:

  • 明示的な「または」演算子:
明示的な「または」演算子を使用して、各値を個別に比較します:

if a == x or a == y or a == z:  # Correct
  • セットまたはリスト:
有効な値のセットまたはリストを作成し、「in」演算子を使用してメンバーシップを確認します:

if a in {"Kevin", "Jon", "Inbar"}:  # Correct
  • ジェネレーター式および "any()":
ジェネレーターを使用する各値を明示的にチェックするには、「any()」を使用した式を使用します。

if any(a == auth for auth in ["Kevin", "Jon", "Inbar"]):  # Correct

パフォーマンスを考慮する

パフォーマンスの観点から、「in」演算子を使用したセットまたはリストの使用は次のとおりです。通常は最も速いオプションです。 「any()」を使用したジェネレータ式は、最も冗長で最も時間がかかります。

使用例

許可されたユーザーのみにアクセスを許可するには:

以上がPython で `a == x or y or z` が常に True と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。