在 Python 中查詢列表列表中的共同元素


列表的內部元素也可以是列表。在這種情況下,我們可能需要找出這些內部列表中的共同元素。在本文中,我們將找出實現此目標的方法。

使用 map 和交集

交集是在不同集合之間查詢共同元素的簡單數學概念。Python 具有 set 方法,該方法返回一個包含兩個或多個集合之間相似性的集合。因此,我們首先透過 map 函式將列表的元素轉換為集合,然後將 set 方法應用於所有這些轉換後的列表。

示例

 線上演示

listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying intersection
res = list(set.intersection(*map(set, listA)))

# Result
print("The common elements among inners lists : ",res)

輸出

執行以上程式碼,我們將得到以下結果:

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]

使用 reduce 和 lambda

我們還可以應用 Python 中的 reduce 函式。此函式用於將作為引數傳遞給它的給定函式應用於傳遞序列中提到的所有列表元素。lambda 函式透過在應用 set 後迭代每個巢狀列表來找出共同元素。

示例

 線上演示

from functools import reduce
listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying reduce
res = list(reduce(lambda i, j: i & j, (set(n) for n in listA)))

# Result
print("The common elements among inners lists : ",res)

輸出

執行以上程式碼,我們將得到以下結果:

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]

更新於: 2020年5月13日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告