动态比较常见事件的列表

2024-04-19 10:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想动态地使用集合来查找列表中的公共实体。如果我有一个列表列表,它可以包含任意数量的列表,那么我如何才能找到所有列表中所有常见的事件。我考虑过枚举列表并将每个嵌套列表存储在自己的变量中,但是我不确定如何比较所有单个列表。你知道吗

列表示例:

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])  

Tags: 实体示例列表数量事件动态common事情
3条回答

您可以从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表示

>>> 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(ls) for ls in l)) #evaluates to {2, 3, 4}

相关问题 更多 >