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

为何更新列表值时行为存在差异?含单元素子列表的列表案例

问题解析:Python列表浅拷贝的元素差异

示例代码

x = [1,3,6,[18]]
y = list(x)
print(y)
x[3][0] = 15

x[1] = 12
print(x)
print(y)

现象说明

运行上述代码后会发现:修改x[3][0](嵌套列表内的元素)时,y对应位置的值会同步变化;但修改x[1](列表中的整数元素)时,y里的y[1]仍为原数值3,不会同步更新。

原因分析

这是因为list(x)执行的是浅拷贝,而非深拷贝:

  • 对于列表中的不可变元素(如整数、字符串、元组),浅拷贝会复制元素的独立引用。x[1]是整数3,y[1]存的是指向3的新引用。当执行x[1] = 12时,只是把x列表的第2个位置替换为指向12的新引用,完全不影响y列表对应位置的引用,因此y[1]保持原数值。
  • 对于列表中的可变元素(如嵌套列表、字典),浅拷贝仅复制该可变元素的引用,不会复制整个元素对象。x[3]和y[3]指向同一个嵌套列表,因此修改该嵌套列表内部的元素(如x[3][0] = 15),通过x或y访问这个嵌套列表时,看到的都是修改后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:54:22