nds*_*svw 2 python set set-comprehension
这是我的代码.
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
Run Code Online (Sandbox Code Playgroud)
它回来了set([1, 2, 3, 4, 5]).
在这种情况下是否可以使用集合理解?我怎么写得更短?
选项1
set.union
为什么你需要一个循环?使用set.union,它允许您一次计算两个以上集合(容器)的并集.
set.union(*[{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
我说"容器",因为第二个(和以后的)参数根本不需要设置.
set.union(*[{1,2}, [3,4], [5,1]])
# {1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
然而,第一个需要.或者,
set().union(*[[1,2], [3,4], [5,1]])
# {1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
在调用unionset对象(而不是类)时,不需要设置任何参数.
选项2
functools.reduce
如果这不符合您的口味,那么set.union也是如此.
from functools import reduce
reduce(set.union, [{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
这执行成对减少,累积结果.然而,不如第一种选择那么好.
如果你真的想要在这里有一个集合理解:
lst = [{1,2}, {3,4}, {5,1}]
{elem for set_ in lst for elem in set_}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |