我有一组l
套。要在l
中完成所有集合的联合:
union = set()
for x in l:
union |= x
我感觉有一种更经济/更实用的写作方式。我能改进吗?
答案 0 :(得分:9)
以下是我将如何做(根据评论进行一些更正):
union_set = set()
union_set.update(*l)
或
union_set = set.union(*l)
答案 1 :(得分:5)
>>> l = [set([1, 2, 3]), set([3, 4, 5]), set([0, 1])]
>>> set.union(*l)
set([0, 1, 2, 3, 4, 5])
答案 2 :(得分:4)
如果你正在寻找一种功能性的方法,那么传统的方法比reduce()
更为传统:
>>> reduce(set.union, [ set([1,2]), set([3,4]), set([5,6]) ])
set([1, 2, 3, 4, 5, 6])
在Python 3.0中,reduce
可以找到functools
;在2.6和2.7中,它存在于{{1}}和内置的(如旧解释器中)。
答案 3 :(得分:3)
union = reduce(set.union, l)
在Python 2.x中,reduce
是内置的。在3.x中,它位于functools
模块中。