Python中for循环内调用集合union方法求并集不生效如何解决?
错误原因
Python的set.union()方法属于非原地操作,它不会修改调用方法的原集合,只会生成并返回一个包含两个集合合并结果的新集合。你现有代码没有接收这个返回的合并结果,因此初始定义的my_set始终没有被更新,一直保持空集合的初始状态。
修复后的代码
my_set = set() # 可替换为你的目标集合列表 [{'1'}, {'2','8'}, {'3','9', '1'}] for i in [{'1'}, {'2','8'}, {'3','9'}]: print(i) # 接收union返回的新集合,赋值给my_set保存合并结果 my_set = my_set.union(i) print(my_set) print(my_set)
运行输出
{'1'} {'1'} {'8', '2'} {'1', '8', '2'} {'9', '3'} {'1', '2', '3', '8', '9'} {'1', '2', '3', '8', '9'}
补充说明
- 遍历得到的
i本身就是集合类型,不需要额外用set(i)做转换,该步属于冗余操作,删除不影响逻辑 - 本次修改仅调整了循环内的赋值逻辑,完全保留了循环+
union的实现方式,未使用其他捷径方案。
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

