ホームページ  >  記事  >  バックエンド開発  >  Python でリスト内の複数の値を効率的にチェックする方法: すべてかセットか?

Python でリスト内の複数の値を効率的にチェックする方法: すべてかセットか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 04:44:30478ブラウズ

How to Efficiently Check for Multiple Values in a List in Python: All vs Sets?

リスト内のメンバーシップの複数の値のテスト

複数の値がリストに属しているかどうかを確認しようとすると、予期しない結果が発生する可能性があります。たとえば、Python の「,」演算子を使用してメンバーシップをテストすると、予期しないタプルが返される可能性があります。

<code class="python">'a','b' in ['b', 'a', 'foo', 'bar']
('a', True)</code>

Python の「all」関数

複数の値のメンバーシップを正確にテストするには、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 サイトの他の関連記事を参照してください。

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