python列表几个数组的交集

时间:2018-02-14 16:57:40

标签: python

我想要交叉几个(例如3个)列表。

a = ["a", "b", "c"]
b = ["d", "e", "f"]
c = ["g", "h", "i"]

intersect1d有一个numpy方法,但每次调用只接受2个数组,因此使用起来不太方便。是他们的任何方法,一次接受一堆列表?

3 个答案:

答案 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'}