在Python 中,確定一個列表中的元素是否存在於另一個列表中對於各種資料操作任務至關重要。本文探討了測試這種重疊的不同方法,評估其效率並提供最佳實踐。
1。生成器表達式
<code class="python">any(i in a for i in b)</code>
此方法迭代一個列表並檢查另一個列表中的成員資格,如果找到匹配則返回 True。其時間複雜度為 O(n),其中 n 為較大列表的長度。
2。集合交集
<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>
此方法只將一個列表轉換為集合,並迭代另一個列表,檢查集合成員資格。它避免了中間集合的創建,使其比傳統集合交集更快。
4. Isdisjoint 方法
<code class="python">not set(a).isdisjoint(b)</code>
此方法使用凍結集合的 isdisjoint 方法來確定它們是否有任何公共元素。若不存在,結果為False;
最壞情況:
在大多數情況下,不相交方法是最快的,因為它受益於恆定時間集成員資格檢查。
生成器表達式的最佳情況:
要考慮的因素:
以上是如何在 Python 中檢查一個列表中的元素是否與另一個列表重疊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!