找到多组交集的最佳方法是什么?我有一套套装:setlist = [s1,s2,s3...]我想要s1∩s2∩s3...我可以通过执行一系列成对s1.intersection(s2)等来编写一个函数来完成它。有推荐的,更好的或内置的方式吗?
3 回答
忽然笑
TA贡献1806条经验 获得超5个赞
从2.6开始,set.intersection任意多次迭代。
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s3 = set([2, 4, 6])
>>> s1 & s2 & s3
set([2])
>>> s1.intersection(s2, s3)
set([2])
>>> sets = [s1, s2, s3]
>>> set.intersection(*sets)
set([2])
慕婉清6462132
TA贡献1804条经验 获得超2个赞
显然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}
添加回答
举报
0/150
提交
取消