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

Python列表赋值后删除元素同步影响原列表:Bug还是特性?

为什么修改赋值后的列表变量会影响原列表?

嗨,这绝对不是Bug,而是Python里可变对象赋值的核心特性——很多刚接触Python的朋友都会踩这个坑,我当初刚学的时候也懵了好一会儿😅

先看你给出的代码:

array1 = ['a','b','c']
test = array1
del test[2]
print(test)
print(array1)

实际输出确实是['a', 'b']和['a', 'b'],原因其实很简单:

在Python中,列表(list)属于可变对象。当你执行test = array1这行代码时,并不是把array1里的元素复制一份给test,而是让test这个变量和array1指向了内存中同一个列表对象。打个通俗的比方:就像两个人拿着同一扇房间的钥匙,不管谁用钥匙进门修改房间里的东西,另一个人开门看到的都是修改后的状态。

如果想要修改test的同时不影响原列表array1,你需要创建原列表的独立副本,常见的方法有这几种:

  • 切片法:test = array1[:](通过切片获取整个列表的副本)
  • 构造函数法:test = list(array1)(用list构造函数生成新列表)
  • copy模块法:import copy; test = copy.copy(array1)(使用标准库的copy方法)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:18