Python では、あるリストの要素が別のリストに存在するかどうかを判断することは、さまざまなデータ操作タスクに不可欠です。この記事では、この重複をテストし、その効率を評価し、ベスト プラクティスを提供するためのさまざまな方法について説明します。
1. Generator Expression
any(i in a for i in b)
このメソッドは、1 つのリストを反復処理し、もう 1 つのリストのメンバーシップをチェックし、一致する場合は True を返します。見つかった。その時間計算量は O(n) です。ここで、n は大きい方のリストの長さです。
2。 Set Intersection
bool(set(a) & set(b))
このアプローチでは、両方のリストをセットに変換し、それらの交差を見つけます。交差部分が空でない場合は、True を返します。この場合の最悪の場合の時間計算量は O(n m) です。ここで、n と m はリストの長さです。
3。ハイブリッド セット交差
a = set(a)
any(i in a for i in b)
このメソッドは、1 つのリストのみをセットに変換し、他のリストを反復処理して、セットのメンバーシップを確認します。これにより、中間セットの作成が回避され、従来のセット交差よりも高速になります。
4. Isdisjoint メソッド
not set(a).isdisjoint(b)
このアプローチでは、フリーズ セットの isdisjoint メソッドを使用して、それらに共通の要素があるかどうかを判断します。そうでない場合、結果は False になります。それ以外の場合は True です。
ワーストケース:
ほとんどの場合、定数時間のセット メンバーシップ チェックの恩恵を受けるため、isdisjoint メソッドが最も高速です。
ジェネレーター式の最適なケース:
考慮すべき要素:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3