深拷贝、浅拷贝

本文介绍了Python中对象拷贝的概念,包括直接赋值、浅拷贝及深拷贝的区别,并通过实例展示了拷贝操作对对象的影响。对于包含复杂数据结构的情况,浅拷贝可能无法完全独立复制对象,而深拷贝则能彻底复制所有层级的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接赋值:其实就是对象的引用(别名)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

浅拷贝需要涉及到数据在内存中如何存储,这部分可以看http://www.cnblogs.com/yuanchenqi/articles/5782764.html,里面有较为详细的图文讲解,深浅拷贝的例子可以参照菜鸟教程http://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html。这个坑等以后再来详细填,没怎么用到暂时

浅拷贝,copy(),拷贝的是目标对象的指针地址

深拷贝,相当于完全复制了一份内容,和源数据不再有任何联系,需要从copy模块导入

谨以此文,纪念给烦躁于深浅拷贝的你我

s= [1,'hello','world']
#想复制一份列表
#s1 = [1,'hello','world']
#s1[0]=2
# print(s)
# print(s1)
s2 = s.copy()#copy方法拷贝一份和s列表一样的列表
print(s2)
s2[0]=3 #拷贝后修改s2的值,s的值不会改变
print(s,s2)
l = [[1,2,3],23,34,45]
l1 = l.copy()
l1[0][1]=100
print(l)#得到的结果[[1, 100, 3], 23, 34, 45]
print(l1)#得到的结果[[1, 100, 3], 23, 34, 45]
import copy
l2 = copy.deepcopy(l)#得到的l2是一份完全新的数据,和l没有任何关系了
l2[0][1]=200
print(l2)#结果是[[1, 200, 3], 23, 34, 45]
print(l)#结果是[[1, 100, 3], 23, 34, 45]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值