You need to enable JavaScript to run this app. 列表转换为集合后调用symmetric_difference_update为何不生效?
优惠活动
大模型
产品
解决方案
定价
更多

列表转换为集合后调用symmetric_difference_update为何不生效?

问题原因

核心问题是你调用symmetric_difference_update的对象是临时生成的集合,修改结果没有被保留:

  • 执行set(afternoon)时,仅基于afternoon列表的元素生成了一个全新的临时集合,这个临时集合和原始的afternoon列表没有绑定关系。
  • symmetric_difference_update是原地修改方法,只会修改调用它的临时集合本身,这个临时集合在方法执行完后没有被赋值给任何变量,直接被内存回收,原始afternoon列表没有发生任何改动。
  • 最后执行print(set(afternoon))时,是把完全未改动的原始afternoon列表重新转成集合打印,自然无法得到对称差的预期结果。
正确实现示例

方案1:先将列表转集合存入变量再操作

morning = ['Java', 'C', 'Ruby', 'Lisp', 'C#']
afternoon = ['Python', 'C#', 'Java', 'C', 'Ruby']
afternoon_set = set(afternoon)
afternoon_set.symmetric_difference_update(morning)
print(afternoon_set)
# 输出:{'Python', 'Lisp'}

方案2:直接将变量定义为集合类型

morning = {'Java', 'C', 'Ruby', 'Lisp', 'C#'}
afternoon = {'Python', 'C#', 'Java', 'C', 'Ruby'}
afternoon.symmetric_difference_update(morning)
print(afternoon)
# 输出:{'Python', 'Lisp'}

内容的提问来源于stack exchange,提问作者Nam Nguyễn Tường

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 01:12:03