You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何复制含集合的列表,使原列表与副本互不影响?

问题原因

你用的a[:]和copy.copy(a)都是浅拷贝——它们只会复制列表的顶层结构,列表里的集合元素还是共享同一个内存引用。所以修改新列表里的集合时,原列表的对应集合也会跟着变化,反之亦然。

解决方案

要让原列表和新列表彻底互不影响,需要使用深拷贝:copy.deepcopy()。它会递归复制所有嵌套的对象(包括列表里的每个集合),创建完全独立的副本。

示例代码:

import copy

a = [{1,2}, {0}, {0}, set()]
b = copy.deepcopy(a)

# 验证独立性:修改b中的集合,a不受影响
b[0].add(3)
print(a[0])  # 输出 {1, 2}
print(b[0])  # 输出 {1, 2, 3}

深拷贝会为每个集合创建全新的对象,而非复用原引用,因此两个列表的所有元素都完全独立,修改任意一方都不会影响另一方。

内容的提问来源于stack exchange,提问作者王洲洋

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:20:58