Python 获取集合列表的交集
我想让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 =
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
具有零元素时,此操作也会失败