Python 获取集合列表的交集

Python 获取集合列表的交集,python,list,set,Python,List,Set,我想让python得到集合列表的交集 例如,我有一个函数,它返回s以下集合的列表: [set(0,1,3), set(1,3)] 正如你所看到的,这个的交集是集合{1,3}。如何让python获得交叉点?到目前为止,我一直在做的是迭代列表。但是我看不到去十字路口的路 解决方案应该能够处理n个元素的集合列表,而不仅仅是一对 有什么想法吗 理解是受欢迎的 另外,为什么集合呈现为set([]),换句话说,为什么不使用大括号?使用set.intersection: >>> lis =

我想让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(*lis)
set([0, 1, 3])
对于union use
设置。union

>>> lis = [set((0,1,3)), set((1,3))]
>>> set.intersection(*lis)
set([1, 3])
>>> 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])

这不是并集,而是集合的交集。联合体将是
{0,1,3}
。花括号语法后来被添加到语言中。@MartijnPieters多么令人尴尬的大脑屁啊。谢谢
{}
是一个空字典文本,而不是一个空集合文本。删除了我的答案,因为您将
集合.union
添加到了您的答案中。不错。:)有关于通配符作用的文档吗?@franklin如果列表为空,则会生成错误。建议:“set.intersection(*lis)if lis else set()”或“set.union(*lis)if lis else set()”在*之前做什么?当
L
具有零元素时,此操作也会失败