数据分析系列 之python中的浅拷贝和深拷贝

本文详细解析了Python中浅拷贝与深拷贝的区别,并通过具体实例展示了两种拷贝方式对列表等复合类型数据的影响。文章还介绍了如何使用`copy`模块来实现深拷贝。

1 理解:
浅拷贝只复制了父对象,而不复制内部子对象,浅拷贝让一级元素有了自己独立的内存空间,而二级元素仍然指向了被拷贝对象的二级元素的内存区域。
如果既复制父对象,也复制内部子对象?
利用深拷贝copy.deepcopy()来做。

2 举例:

x = [1,2,3]
#直接赋值的方式,x和y共用同一块内存区域,所以修改y的值x也会改变
y = x
y[0] = 4
输入:x
输出:[4,2,3]

#把x的浅拷贝赋值给z
z = x[:]
z[0] = 9
输入:x
#x值并没有改变
输出:[4,2,3]

#重新定义x
x = [1,2,[3,4]]
#浅拷贝
y = x.copy()
#修改y[0]和y[2][0]的值
y[0],y[2][0] = 8,8
输入:y
#浅拷贝让一级元素有了自己独立的内存空间,而二级元素仍然指向了被拷贝对象的二级元素的内存区域
输出:[1,2,[8,4]]

import copy
z = copy.deepcopy(y)
z[0],z[2][0] = 5,5
输入:y
#一级元素、二级元素都没有改变
输出:[1,2,[8,4]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值