尋找巢狀清單的交集
從巢狀清單中檢索交集提出了與平面清單的直接方法不同的挑戰。本文探討了一種有效確定嵌套列表交集的解決方案。
如問題內容所示,使用集合交集可以輕鬆實現查找平面列表的交集:
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中文網其他相關文章!