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

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

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

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]刪除
最新教學 更多>
  • JavaScript中如何動態訪問全局變量?
    JavaScript中如何動態訪問全局變量?
    在JavaScript 一種方法是使用窗口對象存儲和檢索變量。通過引用全局範圍,可以使用其名稱動態訪問變量。 //一個腳本 var somevarname_10 = 20; //另一個腳本 window.all_vars = {}; window.all_vars ['somevarna...
    程式設計 發佈於2025-04-29
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-04-29
  • 在PHP中如何高效檢測空數組?
    在PHP中如何高效檢測空數組?
    在PHP 中檢查一個空數組可以通過各種方法在PHP中確定一個空數組。如果需要驗證任何數組元素的存在,則PHP的鬆散鍵入允許對數組本身進行直接評估:一種更嚴格的方法涉及使用count()函數: if(count(count($ playerList)=== 0){ //列表為空。 } 對...
    程式設計 發佈於2025-04-29
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-04-29
  • VSCode在Go模板中顯示CSS驗證錯誤的原因
    VSCode在Go模板中顯示CSS驗證錯誤的原因
    在使用GO的html/template軟件包和編寫諸如mypage.tmpl之類的編寫模板時,對VSCODE中的CSS錯誤進行故障排除。 mypage.tmpl:可以觸發以下錯誤: 嘗試在樣式的html attribute。 settings。搜索“ html.validate.styles”。將其...
    程式設計 發佈於2025-04-29
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-04-29
  • 如何從PHP中的數組中提取隨機元素?
    如何從PHP中的數組中提取隨機元素?
    從陣列中的隨機選擇,可以輕鬆從數組中獲取隨機項目。考慮以下數組:; 從此數組中檢索一個隨機項目,利用array_rand( array_rand()函數從數組返回一個隨機鍵。通過將$項目數組索引使用此鍵,我們可以從數組中訪問一個隨機元素。這種方法為選擇隨機項目提供了一種直接且可靠的方法。
    程式設計 發佈於2025-04-29
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-04-29
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError: SomeClass...
    程式設計 發佈於2025-04-29
  • 哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    程式設計 發佈於2025-04-29
  • Python實現鍵盤輸入超時功能的技巧
    Python實現鍵盤輸入超時功能的技巧
    等待超時輸入鍵盤輸入用戶輸入檢索過程可能會耗時,尤其是在使用大量數據時。為了防止過度等待,希望在輸入提示期間實現超時。 一個解決方案涉及利用選擇調用。此方法是簡潔且可移植的:導入sys,選擇 打印(“您有十秒鐘可以回答!”) #將`timeout'指定為10秒 i,o,e = select...
    程式設計 發佈於2025-04-29
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-04-29
  • 如何從2D數組中提取元素?使用另一數組的索引
    如何從2D數組中提取元素?使用另一數組的索引
    Using NumPy Array as Indices for the 2nd Dimension of Another ArrayTo extract specific elements from a 2D array based on indices provided by a second ...
    程式設計 發佈於2025-04-29
  • 您如何在Laravel Blade模板中定義變量?
    您如何在Laravel Blade模板中定義變量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配變量對於存儲以後使用的數據至關重要。在使用“ {{}}”分配變量的同時,它可能並不總是最優雅的解決方案。 幸運的是,Blade通過@php Directive提供了更優雅的方法: $ old_section =...
    程式設計 發佈於2025-04-29
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-04-29

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

Copyright© 2022 湘ICP备2022001581号-3