在 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告