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

Python中如何避免修改赋值自另一列表的变量时改动原列表

为什么修改b会同步修改a

Python中的列表属于可变对象,b = a这行代码并没有创建新的列表,只是让变量b也指向了变量a对应的列表内存地址,两个变量本质是同一个列表的不同别名。因此对b执行append修改列表内容时,a读取到的也是同一个被修改后的列表,最终输出结果一致。

避免关联修改的方案

根据列表的结构不同,可以选择不同的拷贝方式生成独立的新列表:

  • 如果是元素全为数字、字符串这类不可变类型的一维列表,用浅拷贝即可实现隔离:
    • 切片拷贝:b = a[:]
    • list构造器拷贝:b = list(a)
    • copy模块浅拷贝:
      import copy
      b = copy.copy(a)
      
  • 如果列表内部包含嵌套的列表、字典等可变对象,需要用深拷贝才能完全避免双向影响:
    import copy
    b = copy.deepcopy(a)
    
    深拷贝会递归复制所有层级的可变对象,新列表和原列表完全独立,修改任意一个都不会影响另一个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:07