ホームページ  >  記事  >  バックエンド開発  >  [\'b\', \'a\', \'foo\', \'bar\']\ の \"(\'a\', \'b\') が次のように機能しないのはなぜですかリスト内の複数の値をチェックすることが期待されていますか?

[\'b\', \'a\', \'foo\', \'bar\']\ の \"(\'a\', \'b\') が次のように機能しないのはなぜですかリスト内の複数の値をチェックすることが期待されていますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 05:52:02157ブラウズ

Why Doesn't

複数の値がリストに属していることを確認する方法

質問:

リストに複数の値が存在するかどうかを確認したいのですが、次のコードは予期しない結果を生成します:

'a','b' in ['b', 'a', 'foo', 'bar']

このコードが意図したとおりに機能しないのはなぜですか?複数の値のメンバーシップを効率的に確認するにはどうすればよいですか?

答え:

Python は、コード スニペットを目的のリストのメンバーシップ テストとしてではなく、タプルの比較として解釈します。複数の値の存在を正しくテストするには、次のアプローチを使用します。

all(x in container for x in items)

ここで、container はテスト対象のリストまたはその他のシーケンスであり、items は検索する値を含む反復可能です。

追加の考慮事項:

  • 速度テスト: 上記のアプローチはほとんどの場合に適切に実行されますが、リストをセットに変換するとより高速な結果が得られる場合があります。ただし、この変換が常に価値があるとは限りません。ベンチマークは、速度の利点が入力のサイズとタイプに応じて異なることを示しています。
  • セットの考慮事項: セットはハッシュ可能な要素の包含チェックを高速化できますが、その作成にはメモリ オーバーヘッドが必要です。ジェネレーターは代替手段を提供し、ハッシュ化不可能な要素を含む大規模なデータセットの場合により効率的です。

結論:

all(x in コンテナー for x in items) メソッドは、リストまたは他のコンテナー内の複数の値のメンバーシップを確認するための多用途かつ効率的なソリューションです。特定のニーズに応じて、セットに変換するかジェネレーターを使用すると、パフォーマンスがさらに最適化される場合があります。

以上が[\'b\', \'a\', \'foo\', \'bar\']\ の \"(\'a\', \'b\') が次のように機能しないのはなぜですかリスト内の複数の値をチェックすることが期待されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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