複数の値がリストに属しているかどうかを確認しようとすると、予期しない結果が発生する可能性があります。たとえば、Python の「,」演算子を使用してメンバーシップをテストすると、予期しないタプルが返される可能性があります。
<code class="python">'a','b' in ['b', 'a', 'foo', 'bar'] ('a', True)</code>
複数の値のメンバーシップを正確にテストするには、Python の all 関数を利用します。以下に示すように、リスト内包表記と組み合わせて使用します。
<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b']) True</code>
セットもメンバーシップ テストに使用できます。ただし、制限もあります。たとえば、リストのようなハッシュ化できない要素は処理できません。
<code class="python">{'a', 'b'} <= {'a', 'b', 'foo', 'bar'} True {'a', ['b']} <= {'a', ['b'], 'foo', 'bar'} Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'</code>
ほとんどの場合、all 関数を使用したサブセット テストはセットを使用するよりも高速です。ただし、リストが大きく、ハッシュ化できない要素が多く含まれる場合、この利点は減少します。さらに、テスト項目がすでにセットに格納されている場合は、サブセット テストを使用すると大幅に高速になります。
リスト内の複数の値のメンバーシップをテストする場合、リストを使用して all 関数を使用すると、理解することが推奨されるアプローチです。セットは特定の状況では便利ですが、その制限を考慮する必要があります。最も最適なアプローチは、テストされる特定のコンテキストとデータによって異なります。
以上がPython でリスト内の複数の値を効率的にチェックする方法: すべてかセットか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。