获得集合列表的交集

fra*_*lin 10 python list set

我希望python获得一组集合的交集.

例如,我有一个函数返回s以下集合列表:

[set(0,1,3), set(1,3)]
Run Code Online (Sandbox Code Playgroud)

如您所见,这是集合{1,3}的交集.我怎样才能让python获得交集?到目前为止我一直在做的是迭代列表.但我不能看到得到交叉点.

解决方案应该能够处理n个元素列表而不仅仅是一对.

有任何想法吗?

理解是受欢迎的

顺便说一下,为什么设置呈现为set([])换句话说为什么不只是用花括号?

Ash*_*ary 26

用途set.intersection:

>>> lis = [set((0,1,3)), set((1,3))]
>>> set.intersection(*lis)
set([1, 3])
Run Code Online (Sandbox Code Playgroud)

供工会使用set.union:

>>> set.union(*lis)
set([0, 1, 3])
Run Code Online (Sandbox Code Playgroud)

如果性能很重要,请使用:

>>> from itertools import islice
>>> set.intersection(set(lis[0]), *islice(lis, 1, None))
set([1, 3])
Run Code Online (Sandbox Code Playgroud)

  • 如果您的列表为空,这将产生一个错误。建议:“set.intersection(*lis) if lis else set()”或:“set.union(*lis) if lis else set()” (2认同)