【发布时间】:2021-09-13 21:21:24
【问题描述】:
我有一个集合列表[{'1'}, {'2','8'}, {'3','9', '1'}]。我想遍历这个列表并找到所有这些集合的并集。我已完成以下操作,但我的集合保持为空:
my_set = set()
for i in [{'1'}, {'2','8'}, {'3','9'}]:
print(i)
my_set.union(set(i))
print(my_set)
print(my_set)
输出如下:
{'1'}
set()
{'8', '2'}
set()
{'9', '3'}
set()
set()
注意:
请修复我的循环,不要提出不使用循环的快捷方式和union。
【问题讨论】:
-
联合函数返回一个集合,只需
my_set = my_set.union(set(i)) -
预期的最终结果是什么?
-
“请修复我的循环,不要提出不使用循环和联合的快捷方式”:为什么?
-
my_set.union(set(i))不能在原地工作,它返回一个新集。您应该为此使用.update或增强联合运算符:myset |= i(注意,使用set(i)是没有意义且效率低下)。你不应该这样做my_set = my_set.union(i),因为这将循环中效率低下。 -
这不就是
my_set = {a for s in [{'1'}, {'2','8'}, {'3','9'}] for a in s}吗?