PYTHON copy.copy()与copy.deepcopy()的区别
在列表中,经常会用到copy()这个函数,在列表a中,a.copy()与切片 a[:] 功能相同
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的小列表。
感谢大家阅览
还是一名学生,在文中很有可能出现错误的观点或术语,请各位前辈批评与指导,谢谢!