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

Python中如何修改变量值而不影响同内存引用的另一个变量

问题本质

Python中赋值语句不会复制对象,只会为现有对象绑定新的变量名。当你执行y = x操作时,若x是列表这类可变对象,x和y会指向内存中完全相同的列表实例,对y的元素做原地修改时,本质是修改这个共享的列表对象,因此x对应的内容也会同步变化。

数字类型无联动的原因

数字、字符串、元组属于不可变对象,不存在原地修改的可能,所有看似“修改”这类变量的操作,本质都是将变量绑定到一个新创建的对象上,自然不会影响绑定到原对象的其他变量。

实现修改y不改动x的方案

你需要为原列表创建独立的副本,再将副本赋值给y,根据列表结构可以选择不同的拷贝方式:

  • 一维列表场景(无嵌套可变对象),任选以下一种写法即可:
    • 切片法(写法最简洁):
      x = [2,3,4,5,8]
      y = x[:]
      y[2] = 10
      print(y) # 输出 [2,3,10,5,8]
      print(x) # 输出 [2,3,4,5,8],不受修改影响
      
    • 列表构造法:
      y = list(x)
      
    • copy模块浅拷贝:
      import copy
      y = copy.copy(x)
      

注意:以上三种均为浅拷贝,仅复制了最外层列表,如果列表中嵌套了列表、字典这类可变对象,嵌套层的内容仍然是共享引用的。如果要处理嵌套结构,需要使用深拷贝递归复制所有层级的对象,此时无论怎么修改y都不会影响x:

import copy
y = copy.deepcopy(x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:54:52