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

Python中列表赋值为何两种操作结果存在差异?

Python列表赋值的两种行为差异解析

场景1:修改共享列表对象

执行代码:

first = [1,2,3,4,5]
second = first
second.append(6)
print(first)
print(second)

实际输出(注:原提问输出存在笔误,append操作后列表会新增元素6):

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]

场景2:变量重新绑定新对象

执行代码:

first = [1,2,3,4,5]
second = first
first = [2,4,6,8]
print(first)
print(second)

输出:

[2, 4, 6, 8]
[1, 2, 3, 4, 5]

差异原因解析

Python里的变量本质是指向内存中对象的引用,而非存储对象本身:

  • 场景1中,second = first 让两个变量指向同一个列表对象。second.append(6)是直接修改这个共享对象的内容,因此通过first或second访问的都是修改后的同一对象。
  • 场景2中,first = [2,4,6,8] 不是修改原有列表,而是创建了一个全新的列表对象,并将first的引用重新绑定到这个新对象上。second的引用未发生变化,仍指向最初的列表,所以两者输出不同。

简单类比:就像两个人共用同一把钥匙开同一扇门,其中一个人修改了门内的物品,另一个人开门看到的是同样的结果;但如果其中一个人换了一把新钥匙开另一扇门,原来的门和里面的物品不受影响,另一个人用旧钥匙打开的还是原来的门。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:29:57