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

Python中列表拷贝后修改新列表为何会改动原列表?

问题根源

你使用的.copy()、list(originList)、originList[:]都属于浅拷贝,仅会复制列表的最外层容器,内层嵌套的子列表仍然和原列表共享同一内存引用。你修改newList[y][z]时实际操作的是共享的子列表对象,因此原列表也会同步变更。

解决方案

方案1:手动嵌套拷贝(适合二维等简单嵌套结构)

直接在拷贝外层列表时,同时拷贝每个内层子列表,替换原有拷贝逻辑即可:

# 替换原newList = originList.copy()
newList = [row.copy() for row in originList]

方案2:使用深拷贝工具(适合任意层数的嵌套结构)

调用Python标准库copy提供的deepcopy方法,会递归拷贝所有层级的嵌套对象:

import copy
# 替换原newList = originList.copy()
newList = copy.deepcopy(originList)

两种方案任选其一即可实现仅修改新列表、原列表保持不变的需求,对Python3.9.6版本完全兼容。

内容的提问来源于stack exchange,提问作者SantiClaw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03