python3浅拷贝与深拷贝的区别和理解

python3浅拷贝与深拷贝的区别和理解

浅拷贝,只对顶层拷贝
深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了

参考这里:
https://www.jianshu.com/p/03dce38cc97e

# 深拷贝的会对子元素也进行拷贝
import copy

l1 = [11, 12]
l2 = [21, 22]
num = 555

allOne = [l1, l2,num]
# 浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
# 经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了


print("id allOne:"+str(id(allOne)))
print("拷贝前id allOne[0]:"+str(id(allOne[0])))
print("拷贝前 id allOne[1]:"+str(id(allOne[1])))
print("拷贝前id allOne[2]:"+str(id(allOne[2])))

# allOne2 = copy.deepcopy(allOne) # copy.deepcopy 深拷贝
allOne2 = copy.copy(allOne) # copy.deepcopy 浅拷贝

print("------------------------------")

# allOne[1] = [113,114]
# allOne2[2] = [227,228]

print(allOne)
print(allOne2)

print("id allOne2:"+str(id(allOne2)))
print("拷贝后id allOne2[0]:"+str(id(allOne2[0])))
print("拷贝后id allOne2[1]:"+str(id(allOne2[1])))
print("拷贝后id allOne2[2]:"+str(id(allOne2[2])))

浅拷贝
在这里插入图片描述

深拷贝:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值