在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;
最壞情況:
大多數情況下,不相交方法是最快的,因為它受益於恆定時間集成員資格檢查。
生成器表達式的最佳情況:
需要考慮的因素:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3