我想要交叉几个(例如3个)列表。
a = ["a", "b", "c"]
b = ["d", "e", "f"]
c = ["g", "h", "i"]
intersect1d
有一个numpy
方法,但每次调用只接受2个数组,因此使用起来不太方便。是他们的任何方法,一次接受一堆列表?
答案 0 :(得分:1)
Intersect与Sets一起使用并使用&执行操作。当它坐下时,你将返回一个空集。如果你稍微改变一下你的名单,你就会发现它有效。
a = ["a", "b", "c"]
b = ["d", "a", "f"]
c = ["g", "h", "a"]
set(a) & set(b) & set(c)
答案 1 :(得分:1)
如果您的列表位于list
,则可以执行以下操作:
a = ["a", "b", "c"]
b = ["a", "e", "f"]
c = ["a", "h", "i"]
lists = [a, b, c]
intersection = list(reduce(lambda u, v: u&v, (set(x) for x in lists)))
print(intersection)
#['a']
答案 2 :(得分:1)
这是我首选的语法:
a = ["a", "b", "c"]
b = ["a", "e", "f"]
c = ["a", "h", "i"]
set.intersection(*map(set, (a, b, c)))
# {'a'}