Python 列表中多个集合的并集
这是我的密码Python 列表中多个集合的并集,python,set,set-comprehension,Python,Set,Set Comprehension,这是我的密码 s = set() for x in [ {1,2}, {3,4}, {5,1} ]: s |= x 它返回集([1,2,3,4,5]) 在这种情况下,有可能使用集合理解吗?如何将其写得更短?set.union 为什么你需要一个循环呢?使用set.union,可以一次计算两个以上集合(容器)的并集。我之所以说“containers”,是因为第二个(以及以后的)参数根本不需要设置 set.union(*[{1,2}, [3,4], [5,1]]) # {1, 2, 3, 4
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
它返回集([1,2,3,4,5])
在这种情况下,有可能使用集合理解吗?如何将其写得更短?set.union
为什么你需要一个循环呢?使用set.union
,可以一次计算两个以上集合(容器)的并集。我之所以说“containers”,是因为第二个(以及以后的)参数根本不需要设置
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}
在set对象(而不是类)上调用union
时,不需要设置任何参数
functools.reduce
这将执行成对减少,从而累积结果。但是,没有第一个选项好。如果您真的想在这里了解集合理解:
lst = [{1,2}, {3,4}, {5,1}]
{elem for set_ in lst for elem in set_}
除了{1,2}.union(*[[3,4],[5,1]])
之外,您还可以使用set().union(*[{1,2}[3,4],[5,1]])
。
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_}