为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2019-08-09 17:30:47
找到多组交集的最佳方法是什么?我有一套套装: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])


查看完整回答
反对 回复 2019-08-09
?
慕婉清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}


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信