Python_深拷贝和浅拷贝

2022-10-16,

拷贝与浅拷贝

import copy
v = 123
v1 = copy.copy(v) #浅拷贝
v2 = copy.deepcopy(v) #深拷贝

**拷贝只拷贝可变数据类型,浅拷贝只拷贝第一层,深拷贝拷贝所有层

不可变数据类型:int  str  bool 元组tuple

可变数据类型:列表list  集合set  字典dict

# 变量是 int  str  bool 元组tuple
v = “wangxiaobei”
v1 = copy.copy(v) #浅拷贝
v2 = copy.deepcopy(v) #深拷贝
print(id(v),id(v1))
print(id(v),id(v2))

#2877544721776 2877544721776
#2877544721776 2877544721776

 深拷贝和浅拷贝在对不可变数据进行复制时,不改变数据,都是指向该数据的地址(原因是python的小数据池)

# 列表
v = [1,2,3]
v1 = copy.copy(v)
v2 = copy.deepcopy(v)
print(id(v),id(v1))
print(id(v),id(v2))

#2877551762760 2877544718856
#2877551762760 2877551412680

# 嵌套列表
v = [1,2,[22,11,33]]
v1 = copy.copy(v)
v2 = copy.deepcopy(v)
print(id(v[2]),id(v1[2]))
print(id(v[2]),id(v2[2]))

#2877551763208 2877551763208
#2877551763208 2877544722184

 

《Python_深拷贝和浅拷贝.doc》

下载本文的Word格式文档,以方便收藏与打印。