查找集合列表中所有集合中显示的元素

时间:2018-01-08 22:07:08

标签: python set set-intersection

我有n个整数列表,表示为lst = [S1, S2, S3 ... Sn],我想找到所有集合的交集。

有最佳方法吗?

2 个答案:

答案 0 :(得分:3)

如果你有一个列表集合,你可以轻而易举地获得它们的交集:

set.intersection(*lst)

这将生成一个新集合,其中只包含所有集合之间通用的值:

>>> lst = [{1, 2, 3}, {3, 5}, {2, 3}]
>>> set.intersection(*lst)
{3}

答案 1 :(得分:1)

编辑:误读,认为您有多个数字列表,并且通常会询问如何查找所有数字中存在的数字。但是,请保留下面的原始答案,因为有些人仍然认为它在某种程度上有所帮助。

是的,它被称为集合交集,可用于设置数据类型。

演示:

>>> s = set((1, 2, 3))
>>> s2 = set((2, 3, 4))
>>> s3 = set((3, 4, 5))
>>> s & s2
{2, 3}
>>> s & s2 & s3
{3}

如果您当前的数据存储在列表中,将其转换为集合只需将列表传递给set()构造函数:

>>> numbers = [2, 7, 9, 10]
>>> set(numbers)
{2, 7, 9, 10}

请注意,如果列表包含重复项,则该信息将丢失,并且每个重复的元素将仅在结果交集中出现一次。