在Python循环中设置n个数字的交集

时间:2019-01-12 12:45:43

标签: python loops set intersection

我有4个列表:

l1 = ['one', 'two', 'three']
l2 = ['one', 'six', 'three']
l3 = ['one', 'four', 'five']
l4 = ['one', 'three','five']

为了找到所有四个列表的公共交集,我要做:

inter = set(l1).intersection(l2).intersection(l3).intersection(l4)
  

:返回:{'one'}

如何使用列表中的n个列表来达到相同的目的?

list_of_lists = [l1, l2, l3, l4]

谢谢。

1 个答案:

答案 0 :(得分:1)

使用一组列表:

check_list = list(set(l) for l in (l2, l3, l4))

然后循环:

result = set(l1)
for s in check_list:
    result = result.intersection(s)
print(result)

其他选择是使用reduce

check_list = list(set(l) for l in (l1, l2, l3, l4))
from functools import reduce
result = reduce(set.intersection, check_list)

这里有{{3}}