」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Python 中檢查一個列表中的元素是否與另一個列表重疊?

如何在 Python 中檢查一個列表中的元素是否與另一個列表重疊?

發佈於2024-11-08
瀏覽:395

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

在Python 中測試清單重疊

簡介

在Python 中,確定一個清單中的元素是否存在於另一個清單中對於各種資料操作任務至關重要。本文探討了測試這種重疊的不同方法,評估其效率並提供最佳實踐。

方法

1。生成器表達式

any(i in a for i in b)

此方法迭代一個列表並檢查另一個列表中的成員資格,如果匹配則返回True成立。其時間複雜度為 O(n),其中 n 為較大列表的長度。

2。集合交集

bool(set(a) & set(b))

此方法將兩個列表轉換為集合並找到它們的交集。如果交集非空,則傳回 True。最壞情況的時間複雜度為 O(n m),其中 n 和 m 是列表的長度。

3。混合集交集

a = set(a)
any(i in a for i in b)

此方法只將一個列表轉換為集合,並迭代另一個列表,檢查集合成員資格。它避免了中間集合的創建,使其比傳統集合交集更快。

4。 Isdisjoint 方法

not set(a).isdisjoint(b)

該方法使用凍結集合的 isdisjoint 方法來確定它們是否有公共元素。若不存在,結果為False;

效率比較

最壞情況:

  • 產生器表達式:O(n)
  • 集合交集:O(n m)
  • 混合集合交集:O(n m)
  • 不相交方法:O(1)

大多數情況下,不相交方法是最快的,因為它受益於恆定時間集成員資格檢查。

生成器表達式的最佳情況:

  • 當列表的前幾個元素時重疊。在這種情況下,生成器表達式可以很快地傳回 True。

需要考慮的因素:

  • 列表大小
  • 分佈列表中的元素
  • 共享元素的頻率

最佳實踐

  • 對於小型列表(
  • 如果清單結構是可預測的(例如,已排序),則生成器表達式可能會更快。
  • 當清單之間存在顯著的大小差異時,請使用 isdisjoint 方法,並以較小的列表作為第一個參數。
  • 對於共享元素很少或沒有的列表,isdisjoint 方法通常更有效。
版本聲明 本文轉載於:1729382599如有侵犯,請聯繫[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3