python深拷贝、浅拷贝

浅拷贝与深拷贝拷贝出来的均是一个对象,但他们的本质区别是源拷贝对象里的元素是可变类型还是不可变类型,如果源拷贝对象里的元素是可变类型且用浅拷贝,那么源拷贝对象与目标拷贝对象里的元素会互相影响,如果用深拷贝的话会互不影响。
举例:
①浅拷贝
a=[1,2,3,[4,5,6]]
b=a

在这里插入图片描述
在这里插入图片描述

②浅拷贝
import copy
a=[1,2,3,[4,5,6]]
c=copy.copy(a)
a.append(6)
a[3].append(7)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

③深拷贝
import copy
a=[1,2,3,[4,5,6]]
d=copy.deepcopy(a)
a.append(7)
d[3].append(2)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
总结:
①在确定不发生任何冲突的情况下,可以用浅拷贝,效率上会提升且节省内存;
②如果不确定避免数据互相影响,用深拷贝;
③深拷贝会把可变对象也连同复制一份,浅拷贝是共享可变对象。
注:常用可变对象(字典、集合、列表),常用不可变对象(字符串、整型、元组)
推荐画图站:http://pythontutor.com/live.html#mode=edit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值