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

为何修改Python中从其他变量赋值的列表会改变原变量?

Python列表赋值后同步修改的原因解析

代码示例

a = 'donkey'
b = 'horse'
c = [a, b]
d = c

print(c)
print(d)

d[0] = 'panda'

print(c)
print(d)

输出结果

['donkey', 'horse']
['donkey', 'horse']
['panda', 'horse']
['panda', 'horse']

原因说明

这是Python对可变对象的引用机制导致的,属于Python的有意设计:

  • 列表(list)是Python中的可变对象,当执行d = c时,并没有创建新的列表,只是让变量d和c同时指向内存中同一个列表对象。
  • 后续通过d[0] = 'panda'修改的是这个共享的列表对象本身,所以不管用c还是d访问,看到的都是修改后的结果。

如何让d成为独立副本

如果需要让d拥有和c相同的内容但互不影响,可以使用以下方法:

  • 切片复制:d = c[:]
  • 用list()构造函数:d = list(c)
  • 使用copy模块:import copy; d = copy.copy(c)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:13:14