对于2.4,您只需定义一个交集函数。
def intersect(*d): sets = iter(map(set, d)) result = sets.next() for s in sets: result = result.intersection(s) return result
对于较新版本的python:
相交方法接受任意数量的参数
result = set(d[0]).intersection(*d[:1])
或者,您可以将第一个集合与其自身相交,以避免切片列表并进行复制:
result = set(d[0]).intersection(*d)
我不太确定哪种方法会更有效,并且感觉这将取决于
d[0]和列表的大小,除非python对它进行了内置检查
if s1 is s2: return s1
在交集法中。
>>> d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]>>> set(d[0]).intersection(*d)set([3, 4])>>> set(d[0]).intersection(*d[1:])set([3, 4])>>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)