深拷贝和浅拷贝的区别

博客介绍了浅拷贝和深拷贝的概念。浅拷贝只复制一层变量,不复制深层变量绑定的对象;深拷贝会复制对象及关联对象。二者最大区别在于复制后修改其中一个对象,浅拷贝会使全部修改,深拷贝仅修改指定对象。

浅拷贝 shallow copy
    浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定额对象的复制过程。
    示例:

L = [3.1,3.2]        
L1 = [1,2,L]        
L2 = L1.copy() #浅拷贝        
print(L1) #[1, 2, [3.1, 3.2]]       
print(L2) #[1, 2, [3.1, 3.2]]       
L2[2][0] = 3.14 
L1.append(3)       
print(L1)   #[1, 2, [3.14, 3.2],3]        
print(L2)   #[1, 2, [3.14, 3.2]]


 
 深拷贝 deep copy
    复制对象及对象关联的对象一起复制过程叫做深拷贝
     示例代码:
 

import copy
l = [3.1,3.2]
l1 = [1,2,l]
l2 = copy.deepcopy(l1) #深拷贝
print(l1) #[1, 2, [3.1, 3.2]]
print(l2) #[1, 2, [3.1, 3.2]]
l1[2][0] = 3.14
l1.append(3)
print(l1)   #[1, 2, [3.14, 3.2],3]
print(l2)   #[1, 2, [3.1, 3.2]]

深拷贝和浅拷贝最大的区别在于copy之后修改其中一个对象:

浅拷贝全部修改

深拷贝只修改 要修改的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值