複数の変数が等しいかどうかのテスト: 包括的なソリューション
このクエリは、複数の変数を特定の整数と比較し、結果に基づいて文字列を出力します。
これに対処するには、次のことを理解する必要があります。 Python のブール式は英語の文のように動作しません。たとえば、提供されているコード フラグメントは、すべての変数を同じ比較に対して評価するのではなく、or 演算子の各側を個別の式として解釈します。
この問題を修正するには、正しい構文は次のとおりです。
if x == 1 or y == 1 or z == 1:
これにより、比較が変数ごとに独立して実行されることが保証されます。
さらに、タプルに対する包含テスト:
if 1 in (x, y, z):
または、さらに効果的に、セットを定コストのメンバーシップ テストに使用できます:
if 1 in {x, y, z}:
この改良されたコードは、つまり、セットのメンバーシップ テストの実行時間は、左側のオペランドに関係なく固定されています。
本質的に、or 演算子は引数を区切って評価します。それぞれをブール式として指定します。ただし、単一の式として評価した場合でも、結果は目的の動作と一致しません。これは、 or 演算子が「真実」 (False、数値 0、または空のコンテナー以外の値) である最初の引数を返すためです。その結果、シーケンス内の最初の true に似た値のみが考慮され、不正確な結果が生じる可能性があります。
以上がPython で複数の変数が等しいかどうかを効率的にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。