找到多组交集的最佳方法是什么?

找到多组交集的最佳方法是什么?

我有一套套装:

setlist = [s1,s2,s3...]

我想要s1∩s2∩s3...

我可以通过执行一系列成对s1.intersection(s2)等来编写一个函数来完成它。

有推荐的,更好的或内置的方式吗?


慕侠2389804
浏览 508回答 3
3回答

忽然笑

从2.6开始,set.intersection任意多次迭代。>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s3 = set([2, 4, 6])>>> s1 & s2 & s3set([2])>>> s1.intersection(s2, s3)set([2])>>> sets = [s1, s2, s3]>>> set.intersection(*sets)set([2])

慕婉清6462132

显然set.intersection你想要的是这里,但是如果你需要概括“把所有这些的总和”,“取所有这些的产品”,“把所有这些的xor”,你正在寻找的是reduce功能:from operator import and_from functools import reduceprint(reduce(and_, [{1,2,3},{2,3,4},{3,4,5}])) # = {3}要么print(reduce((lambda x,y: x&y), [{1,2,3},{2,3,4},{3,4,5}])) # = {3}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python