ホームページ  >  記事  >  バックエンド開発  >  Python リスト内の複数の値のメンバーシップを正確にテストするにはどうすればよいですか?

Python リスト内の複数の値のメンバーシップを正確にテストするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 18:32:29965ブラウズ

How to Accurately Test for the Membership of Multiple Values in a Python List?

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」関数以外にも、このチェックを実行する方法があります。

  • Set Intersection: セットは、「issubset」メソッドを使用してメンバーシップをテストするために使用できます。ただし、セットにはハッシュ可能な要素のみを含めることができるため、特定の種類のデータへの適用が制限されます。
  • ジェネレーター式: ジェネレーター式を使用すると、「all」と同じ操作を実行できます。ただし、すべての種類の入力を効果的に処理できるわけではありません。

速度に関する考慮事項

特定の状況では、サブセット テストの方が「すべて」のテストよりも高速になる場合があります。特にコンテナーとテスト項目が小さい場合に有効です。ただし、全体的な速度の違いは、サブセット テストの圧倒的な使用を正当化するほど大きくはありません。

「in」の動作は左側の引数の型に依存することに注意することが重要です。たとえば、文字列で 'in' を使用すると、メンバーシップをテストするのではなく、値が連結されます。

リスト内の複数の値のメンバーシップをテストするための最適なアプローチの選択は、特定の要件や関係するデータの種類によって異なります。 、およびパフォーマンスに関する考慮事項。

以上がPython リスト内の複数の値のメンバーシップを正確にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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