首頁 > 後端開發 > Python教學 > 如何在Python中有效率地尋找嵌套清單的交集?

如何在Python中有效率地尋找嵌套清單的交集?

Barbara Streisand
發布: 2024-12-04 05:40:11
原創
289 人瀏覽過

How Can I Efficiently Find Intersections of Nested Lists in Python?

尋找巢狀清單的交集

從巢狀清單中檢索交集提出了與平面清單的直接方法不同的挑戰。本文探討了一種有效確定嵌套列表交集的解決方案。

如問題內容所示,使用集合交集可以輕鬆實現查找平面列表的交集:

b1 = [1,2,3,4,5,9,11,15]
b2 = [4,5,6,7,8]
print(set(b1) & set(b2))  # Output: {4, 5}
登入後複製

但是,當處理嵌套列表時,例如:

c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63]
c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
登入後複製

簡單的方法無法產生所需的結果結果:

print(set(c1) & set(c2))  # Output: set([])
登入後複製

我們目標的交集是:

c3 = [[13, 32], [7, 13, 28], [1, 6]]
登入後複製

解:

解決方案在於將巢狀清單轉換為集合,執行集合交集,然後重建原始巢狀清單結構:

# Convert nested lists to sets 
set_c1 = set(c1) 
set_c2 = [set(sublist) for sublist in c2]

# Compute intersections
intersections = [set_c1.intersection(sublist) for sublist in set_c2]

# Reconstruct nested list structure 
result = [[item for item in intersection] for intersection in intersections] 

# Print the result
print(result)  # Output: [[13, 32], [7, 13, 28], [1, 6]]
登入後複製

透過利用集合交集和集合理解,該解決方案有效地檢索嵌套列表的交集,保留其結構。

以上是如何在Python中有效率地尋找嵌套清單的交集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板