Python-多个列表的交集?

Python-多个列表的交集?,第1张

Python-多个列表交集

对于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])>>>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存