Bjö*_*lex 29 python generator set
假设我有一个集合列表,我想获得该列表中所有集合的联合.有没有办法使用生成器表达式?换句话说,我怎么可以创建在所有集合的并集在该列表中直接作为frozenset?
ken*_*ytm 53
只需使用该.union()方法.
>>> l = [set([1,2,3]), set([4,5,6]), set([1,4,9])]
>>> frozenset().union(*l)
frozenset([1, 2, 3, 4, 5, 6, 9])
Run Code Online (Sandbox Code Playgroud)
这适用于任何可迭代的迭代.
我假设你正在努力避免的是你正在建立联盟时冷冻集对象的中间创造?
这是一种方法.注意:这最初使用itertools.chain()但是,正如Kenny的评论说明,下面的版本稍微好一点:
import itertools
def mkunion(*args):
return frozenset(itertools.chain.from_iterable(args))
Run Code Online (Sandbox Code Playgroud)
像这样调用:
a = set(['a','b','c'])
b = set(['a','e','f'])
c = mkunion(a,b) # => frozenset(['a', 'c', 'b', 'e', 'f'])
Run Code Online (Sandbox Code Playgroud)