首页 > 编程语言 > 详细

python-之-深浅拷贝一

时间:2019-04-21 11:36:51      阅读:134      评论:0      收藏:0      [点我收藏+]

深浅拷贝

一、数据为不可变类型 (str、int、bool) 

技术分享图片

技术分享图片
import copy

v1 = "abc"
v2 = copy.copy(v1)   
v3 = copy.deepcopy(v1)

print(v1 == v2)

print(v1 is v2) 
print(v1 is v3) 

输出结果:

True

True

True
View Code

 

小结:数据为不可变类型时,浅和深拷贝的值一样,且指向同一内存地址。(不考虑小数据池)

 

二、数据为可变类型 (list、set、dict) 

1、没有嵌套的情况

技术分享图片
import copy

v1 = [1,2,3,4,5]
v2 = copy.copy(v1)
v3 = copy.deepcopy(v1)

print(v1 == v2 == v3)

print(v1 is v2) 
print(v1 is v3) 

输出:

True

False

False
View Code

 

技术分享图片

 

 小结:没有嵌套的情况,深浅拷贝也是一样的,都拷贝第一层。

2、有嵌套的情况:

 

技术分享图片
import copy

v1 = [1,2,3, [4, 5, 6]]
v2 = copy.copy(v1)
v3 = copy.deepcopy(v1)

print(v1 == v2 == v3)

print(v1 is v2) 
print(v1 is v3) 

print(v1[3] is v2[3]) 
print(v1[3] is v3[3]) 
print(v2[3] is v3[3])

print(v1[3][0] is v2[3][0]) 
print(v1[3][0] is v3[3][0]) 
print(v2[3][0] is v3[3][0])

输出:

 

True
False
False
True
False
False
True
True
True
View Code

 

 技术分享图片

小结:在嵌套的情况下:

浅拷贝:拷贝第一层

深拷贝:拷贝嵌套下面所有可变类型

 

 

总结:

浅拷贝:只拷贝第一层

深拷贝:拷贝嵌套层次中的所有可变类型

 

python-之-深浅拷贝一

原文:https://www.cnblogs.com/pingxie/p/10744040.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!