python基础——深浅拷贝

copy copy.deepcopy 拷贝、浅拷贝、深拷贝

浅拷贝

拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容。(只能拷贝表层可变数据,内存地址会修改)

深拷贝

拷贝的程度深,自己开辟一块内存,将拷贝内容全部拷贝过来。

深浅拷贝的优缺点对比

(1)深拷贝拷贝程度高,将原数据复制到新的内存空间中。改变拷贝后的内容不用影响原数据内容。但是深拷贝耗时长,且占用内存空间。
(2)浅拷贝拷贝程度低,只复制原数据的地址。其实是将副本的地址指向原数据地址。修改副本内哦让那个,是通过当前地址指向原数据地址,去修改。所以修改副本内容会影响原数据内容。但是浅拷贝耗时短,占用内存空间少。

a = 1
b = a

list1 = [1,2,3]
list2 = list1 #拷贝, list1和list2执行同一块内存地址
del list2[2]
print(list1) #[1,2]

#浅拷贝
listold = [1,2,3,4,5]
listnew = listold.copy() #浅复制
listnew.pop()
print(listold) #[1,2,3,4,5]

dict_data = {'data':[1,2,3]}
new_dict_data = dict_data.copy()
del dict_data['data'][2]
print(new_dict_data)  #{'data':[1,2]}

#深拷贝
from copy import deepcopy
dict_data1 = {'data':[1,2,3]}
dict_data2 = deepcopy(dict_data1)
del dict_data2['data'][2]
print(dict_data1) #{'data':[1,2,3]}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容