ホームページ  >  記事  >  バックエンド開発  >  Python で、あるリストの要素が別のリストと重複しているかどうかを確認するにはどうすればよいですか?

Python で、あるリストの要素が別のリストと重複しているかどうかを確認するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 08:05:29198ブラウズ

How Do I Check if Elements from One List Overlap with Another in Python?

Python でのリストの重複のテスト

はじめに

Python では、あるリストの要素が別のリストに存在するかどうかを判断することは、さまざまなデータ操作タスクに不可欠です。この記事では、この重複をテストし、その効率を評価し、ベスト プラクティスを提供するためのさまざまな方法を検討します。

アプローチ

1. Generator Expression

<code class="python">any(i in a for i in b)</code>

このメソッドは、1 つのリストを反復処理し、もう 1 つのリストのメンバーシップをチェックし、一致するものが見つかった場合は True を返します。その時間計算量は O(n) です。ここで、n は大きい方のリストの長さです。

2。 Set Intersection

<code class="python">bool(set(a) & set(b))</code>

このアプローチでは、両方のリストをセットに変換し、それらの交差を見つけます。交差部分が空でない場合は、True を返します。この場合の最悪の場合の時間計算量は O(n m) です。ここで、n と m はリストの長さです。

3.ハイブリッド セット交差

<code class="python">a = set(a)
any(i in a for i in b)</code>

このメソッドは、1 つのリストのみをセットに変換し、もう一方のリストを反復処理して、セットのメンバーシップを確認します。これにより、中間セットの作成が回避され、従来のセット交差よりも高速になります。

4. Isdisjoint メソッド

<code class="python">not set(a).isdisjoint(b)</code>

このアプローチでは、フリーズ セットの isdisjoint メソッドを使用して、共通の要素があるかどうかを判断します。そうでない場合、結果は False になります。それ以外の場合、True です。

効率の比較

ワーストケース:

  • ジェネレーター式: O(n)
  • 集合集合: O(n m)
  • ハイブリッド集合集合: O(n m)
  • Isdisjoint メソッド: O(1)

ほとんどの場合、isdisjointこのメソッドは、定数時間のセット メンバーシップ チェックの恩恵を受けるため、最も高速です。

ジェネレーター式のベスト ケース:

  • リストの最初のいくつかの要素が重なり合う。この場合、ジェネレータ式はすぐに True を返すことができます。

考慮すべき要素:

  • リスト サイズ
  • 分布リスト内の要素
  • 共有要素の頻度

ベスト プラクティス

  • 小さなリスト (
  • リストの構造が予測可能な場合 (ソートなど)、ジェネレーター式の方が高速になる可能性があります。
  • リスト間のサイズに大きな違いがある場合は、次のように小さいリストで isdisjoint メソッドを使用します。最初の引数。
  • 共有要素がほとんどない、またはまったくないリストの場合、一般に isdisjoint メソッドの方が効率的です。

以上がPython で、あるリストの要素が別のリストと重複しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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