好的,所以我想/需要使用“|: 运算符
假设我有一个清单:
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}
谢谢
好的,所以我想/需要使用“|: 运算符
假设我有一个清单:
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}
谢谢
>>> 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}
您可以使用内置的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])
试试这个,使用列表理解
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)