python列出了几个数组的交集
我想将几个(如3个)列表相交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) 如果您的列表位于列
在
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'}