2024-04-19 10:43:40 发布
网友
我想动态地使用集合来查找列表中的公共实体。如果我有一个列表列表,它可以包含任意数量的列表,那么我如何才能找到所有列表中所有常见的事件。我考虑过枚举列表并将每个嵌套列表存储在自己的变量中,但是我不确定如何比较所有单个列表。你知道吗
l = [[1,2,3,4,], [3,6,4,2,1], [6,4,2,6,7,3]]
我想做这样的事情,但它是动态的,所以它可以接受任何数量的列表:
common = set(l[0]) & set(l[1]) & set(l[2])
您可以从functools包使用reduce:
functools
reduce
from functools import reduce l = [[1, 2, 3, 4], [3, 6, 4, 2, 1], [6, 4, 2, 6, 7, 3]] print(reduce(set.intersection, map(set, l)))
输出:
{2, 3, 4}
用reduce,用lambda表示
lambda
>>> l = [[1,2,3,4,], [3,6,4,2,1], [6,4,2,6,7,3]] >>> from functools import reduce >>> common = reduce(lambda l1,l2: set(l1) & set(l2), l) >>> print(common) {2, 3, 4}
或者,作为@tobias\u k解决方案的一个稍微修改的版本(如注释中所指出的),您可以不使用lambda来实现它
>>> common = reduce(set.intersection, [set(l[0])] + l[1:]))
您可以使用set.intersection:
set.intersection
set.intersection(*(set(ls) for ls in l)) #evaluates to {2, 3, 4}
您可以从
functools
包使用reduce
:输出:
用
reduce
,用lambda
表示或者,作为@tobias\u k解决方案的一个稍微修改的版本(如注释中所指出的),您可以不使用lambda来实现它
您可以使用
set.intersection
:相关问题 更多 >
编程相关推荐