在Python 中尋找清單中的重疊項
判斷兩個清單是否共用任何公用項是程式設計中的一項基本任務。雖然存在簡單的方法,但可能有更有效或更慣用的方法來實現此目的。
本機方法
一種方法涉及將清單轉換為集合並利用交集運算符。然而,這在計算上可能會很昂貴,尤其是對於大型列表,並且需要建立新的資料結構。
另一種方法是使用生成器表達式來迭代一個列表並檢查另一個列表中的成員資格。這避免了創建額外的集合,但仍然具有固有的線性時間複雜度。
混合和高效的方法
混合方法包括將一個清單設定為一組並使用 in操作員檢查其他清單中的成員資格。這結合了集合的效率和列表迭代的便利性。
更有效的方法是利用集合的 isdisjoint() 方法。這會檢查兩個集合是否沒有交集,如果找到任何公共元素,則傳回 False。透過否定結果,我們確定是否有任何項目被分享。
效能注意事項
最佳選擇取決於特定的上下文和清單特徵。根據經驗,在大多數情況下,isdisjoint() 通常優於其他方法。
對於共享元素出現在清單開頭附近的情況,生成器表達式可能會稍微快一些。但是,如果共享元素位於末尾或不存在,isdisjoint() 的速度會快得多。
對於小型清單(少於 10 個元素),isdisjoint() 始終是最佳選擇。對於具有可預測項目排序的較大列表,生成器表達式可能會提供輕微的效能優勢。
建議
在大多數實際場景中,建議使用not set( a).isdisjoint(b) 用於檢查兩個清單之間是否共用任何項目的方法。此方法提供可靠的效能,適用於廣泛的用例。
以上是如何在Python中有效率地檢查清單中的重疊項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!