Python リスト内の複数の値のメンバーシップのテスト
Python で、「in」を使用してリスト内の複数の値のメンバーシップをテストする演算子を使用すると、予期しない結果が生じる可能性があります。次の例を考えてみましょう。
'a','b' in ['b', 'a', 'foo', 'bar'] ('a', True)
結果 'a'、True は、'a' がリストに存在することを示しますが、'b' も存在するかどうかは指定しません。これは、Python が 'in' 式をタプルとして扱い、上記のような出力が得られるためです。
'a' と 'b' の両方がリストに存在するかどうかを正確に確認するには、次のコードを使用できます。アプローチ:
all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b']) True
この式は、リスト ['a', 'b'] 内のすべての要素がコンテナ ['b', 'a', 'foo', 'bar' に含まれることを保証します。 ]。いずれかの要素が存在しない場合、式は False を返します。
代替オプション
「all」関数以外にも、このチェックを実行する方法があります。
速度に関する考慮事項
特定の状況では、サブセット テストの方が「すべて」のテストよりも高速になる場合があります。特にコンテナーとテスト項目が小さい場合に有効です。ただし、全体的な速度の違いは、サブセット テストの圧倒的な使用を正当化するほど大きくはありません。
「in」の動作は左側の引数の型に依存することに注意することが重要です。たとえば、文字列で 'in' を使用すると、メンバーシップをテストするのではなく、値が連結されます。
リスト内の複数の値のメンバーシップをテストするための最適なアプローチの選択は、特定の要件や関係するデータの種類によって異なります。 、およびパフォーマンスに関する考慮事項。
以上がPython リスト内の複数の値のメンバーシップを正確にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。