列表中的多个集合的交集

时间:2013-07-04 03:10:38

标签: python python-3.x set intersection

好的,所以我想/需要使用“|:运算符

说我有一个清单:

list = [{1,2,3},{2,3,4},{3,4,5},{4,5,6}]

我需要在不使用的情况下找到列表的交集:     set.intersection(* L)

理想情况下,我想使用带有for循环的函数(或嵌套for循环)来返回列表中所有集合的交集:

isIntersction(L) = {1,2,3,4,5,6}

由于

3 个答案:

答案 0 :(得分:3)

>>> L=[{1,2,3},{2,3,4},{3,4,5},{4,5,6}]
>>> from itertools import chain
>>> set(chain.from_iterable(L))
{1, 2, 3, 4, 5, 6}

答案 1 :(得分:1)

使用列表理解

试试这个
list = [{1,2,3},{2,3,4},{3,4,5},{4,5,6}]
b = []
[b.append(x) for c in list for x in c if x not in b]
print b # or set(b)

输出:

[1, 2, 3, 4, 5, 6]

如果您热衷于将输出作为一组,请尝试:

b = set([])
[b.add(x) for c in list for x in c if x not in b]
print b

输出:

set([1, 2, 3, 4, 5, 6]) #or {1, 2, 3, 4, 5, 6}

如果你想要一个功能试试这个:

def Union(L):
    b = []
    [b.append(x) for c in L for x in c if x not in b]
    return set(b)

答案 2 :(得分:1)

您可以使用内置的reduce

>>> L = [{1,2,3},{2,3,4},{3,4,5},{4,5,6}]
>>> reduce(set.union, L, set())
set([1, 2, 3, 4, 5, 6])