python列出了几个数组的交集

python列出了几个数组的交集,python,Python,我想将几个(如3个)列表相交 在numpy中有一个intersect1d方法,但它每次调用只接受2个数组,因此使用起来并不舒服。他们的任何方法都可以同时接受一组列表吗?Intersect使用集合并使用&来执行操作。当它放置时,您将返回一个空集。如果你稍微改变一下你的列表,你会发现它是有效的 a = ["a", "b", "c"] b = ["d", "a", "f"] c = ["g", "h", "a"] set(a) & set(b) & set(c) 如果您的列表位于列

我想将几个(如3个)列表相交


numpy
中有一个
intersect1d
方法,但它每次调用只接受2个数组,因此使用起来并不舒服。他们的任何方法都可以同时接受一组列表吗?

Intersect使用集合并使用&来执行操作。当它放置时,您将返回一个空集。如果你稍微改变一下你的列表,你会发现它是有效的

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

set(a) & set(b) & set(c)

如果您的列表位于
列表中
,则可以执行以下操作:

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']

这是我的首选语法:

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

set.intersection(*map(set, (a, b, c)))

# {'a'}

只需转换为
set
并使用
&
操作符-例如:
list(set(a)&set(b)&set(c))
。但是,您的示例的交叉点是一个空集。
a = ["a", "b", "c"]
b = ["a", "e", "f"]
c = ["a", "h", "i"]

set.intersection(*map(set, (a, b, c)))

# {'a'}