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

Posted 琅晓琳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析系列 之python中的浅拷贝和深拷贝相关的知识,希望对你有一定的参考价值。

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]]

以上是关于数据分析系列 之python中的浅拷贝和深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

python中的浅拷贝和深拷贝

Python 中的浅拷贝和深拷贝

Python面试②——Python中的浅拷贝与和深拷贝

C#的浅拷贝和深拷贝

NumPy之浅拷贝和深拷贝

理解一下python中的浅copy和深copy