码迷,mamicode.com
首页 > 编程语言 > 详细

[PYTHON] 深度解析copy.copy() 与 copy.deepcopy()

时间:2017-10-15 11:12:05      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:存储   copy   deepcopy   nbsp   深复制   深度   技术   解析   module   

在列表中,想要复制一个列表,可以使用copy()函数,在列表中,copy()函数与切片 [:] 功能相同

a=[0,1,[0,1]]

b=a.copy()

c=a[:]

-----print b,c-----

b=[0,1,[0,1]]

c=[0,1,[0,1]]

 

在copy module中,copy.copy()也具有相同的功能,但是copy module中还有一个与copy.copy()长的很像,但功能不同的函数,那就是copy.deepcopy()

这也就是今天的主角‘浅复制copy.copy()’ 与 ‘深复制copy.deepcopy()’

首先由一张图 来比较copy module 与 列表中copy()函数有什么区别

技术分享

由此图可见列表中copy() 不仅与 [:] 还与copy.copy()功能相同

可是copy module中的两个函数 缺不相同 这是为什么呢?

 

首先看‘浅复制copy.copy()’的原理

技术分享

由PYTHON可视化过程可知,在‘浅复制’中,b并没有把列表中的小列表存储到一个新的地址中,而是与a公用一个地址,所以当a小列表中值无论怎么改变,b与其相同。

 

再来看, ‘深复制copy.deepcopy()’的原理

技术分享

 

 

由此图可知,‘深复制‘的时候,b把列表中的小列表存储橙一个新的地址,这事无论a的小列表的值怎么变,却不影响b的小列表。

感谢阅览

还是一名学生,在文中很有可能出现错误的观点或术语,请各位前辈批评与指导,谢谢!

[PYTHON] 深度解析copy.copy() 与 copy.deepcopy()

标签:存储   copy   deepcopy   nbsp   深复制   深度   技术   解析   module   

原文地址:http://www.cnblogs.com/hongzejun/p/7669656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!