我希望 python 得到集合列表的交集。
例如,我有一个函数返回s
以下集合列表:
[set(0,1,3), set(1,3)]
如您所见,它的交集是集合 {1,3}。如何让 python 获得交集?到目前为止,我一直在做的是遍历列表。但我看不到十字路口。
解决方案应该能够处理一个 n 元素的集合列表,而不仅仅是一对。
有任何想法吗?
欢迎理解
顺便说一句,为什么要渲染集合set([])
,换句话说,为什么不只使用花括号?
使用set.intersection
:
>>> lis = [set((0,1,3)), set((1,3))]
>>> set.intersection(*lis)
set([1, 3])
对于联合使用set.union
:
>>> set.union(*lis)
set([0, 1, 3])
如果性能很重要,那么使用这个:
>>> from itertools import islice
>>> set.intersection(set(lis[0]), *islice(lis, 1, None))
set([1, 3])
尝试这个:
reduce(set.intersection, L)
In [83]: L = [set([0,1,3]), set([1,3])]
In [84]: reduce(set.intersection, L)
Out[84]: set([1, 3])