什么是在Python中取N个列表的交集最简单的方法?
如果我有两个列表a和b,我知道可以这样做:
a = set(a)
b = set(b)
intersect = a.intersection(b)
我想做一些类似于a&b&c&d&...的事情,针对任意数量的列表(最好不要先转换为集合,但如果这是最简单/最有效的方法,我可以处理)。即,我想编写一个intersect(*args)函数,可以高效地处理任意多个集合。最简单的方法是什么?我的解决方案是reduce(set.intersection,[a,b,c]) - 这个好吗?谢谢。
reduce()
,它并不是最好的选择,因为在 Python 3 中它正在被逐渐淘汰。而且据我所知,与 for 循环相比,它也更慢。 - Xavier Hofrom functools import reduce
。它已从builtins
中删除,但并未完全淘汰。此外,你所听到的有关其速度的说法是高度不准确的:它可能比for循环快得多或慢得多。 - tzot