python 多层列表深拷贝浅拷贝问题 copy

python 多层列表深拷贝浅拷贝问题 copy

有用的单层list copy方式
(转载于此篇文章)解决了多层list copy后,操作仍使列表元素改变的问题

一,问题说明及原因分析

简单来说,切片[:], 浅拷贝.copy()等方法,对于这种多层list的第一层(下图中的第1,3元素),是实现了深拷贝,但对于嵌套的list(下图中的第2元素),仍然是浅拷贝。这其实很好理解,内层的list保存的是地址,复制过去的时候是把地址复制过去了。嵌套的list在内存中指向的还是同一个。

示例
示例
原理图
原理图

二,解决方法

用deepcopy()方法,则无论多少层,无论怎样的形式,得到的新列表都是和原来无关的,这是最安全最清爽最有效的方法。使用时,要导入copy。

##对old或new的任何操作,都不会使另一个list发生变化
import copy
old = [1, [1, 2, 3], 3]
new = copy.deepcopy(old)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值