列表中多个集合的并集
Union of multiple sets in a list
这是我的代码。
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
它returns set([1, 2, 3, 4, 5])
.
在这种情况下是否可以使用集合理解?我怎样才能把它写得更短?
set.union
set.union(*[{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
为什么你需要循环?使用 set.union
,它可以让您一次计算两个以上集合(容器)的并集。我说“容器”,因为根本不需要设置第二个(及以后的)参数。
set.union(*[{1,2}, [3,4], [5,1]])
# {1, 2, 3, 4, 5}
但是,第一个必须是。或者,
set().union(*[[1,2], [3,4], [5,1]])
# {1, 2, 3, 4, 5}
在集合对象(而不是 class)上调用 union
时,none 的参数需要是集合。
functools.reduce
from functools import reduce
reduce(set.union, [{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
这执行成对减少,累积结果。然而,不如第一个选项好。
如果你真的想要一个集合理解:
lst = [{1,2}, {3,4}, {5,1}]
{elem for set_ in lst for elem in set_}
这是我的代码。
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
它returns set([1, 2, 3, 4, 5])
.
在这种情况下是否可以使用集合理解?我怎样才能把它写得更短?
set.union
set.union(*[{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
为什么你需要循环?使用 set.union
,它可以让您一次计算两个以上集合(容器)的并集。我说“容器”,因为根本不需要设置第二个(及以后的)参数。
set.union(*[{1,2}, [3,4], [5,1]])
# {1, 2, 3, 4, 5}
但是,第一个必须是。或者,
set().union(*[[1,2], [3,4], [5,1]])
# {1, 2, 3, 4, 5}
在集合对象(而不是 class)上调用 union
时,none 的参数需要是集合。
functools.reduce
from functools import reduce
reduce(set.union, [{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
这执行成对减少,累积结果。然而,不如第一个选项好。
如果你真的想要一个集合理解:
lst = [{1,2}, {3,4}, {5,1}]
{elem for set_ in lst for elem in set_}