采取集合的联合

时间:2012-02-25 23:49:02

标签: python

我有一组l套。要在l中完成所有集合的联合:

union = set()
for x in l:
   union |= x

我感觉有一种更经济/更实用的写作方式。我能改进吗?

4 个答案:

答案 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模块中。