深拷贝,浅拷贝

Posted 扫驴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝,浅拷贝相关的知识,希望对你有一定的参考价值。

拷贝:在内存中复制一个对象,与引用不同

所谓的不可变对象就是不能拷贝的对象,数字,元祖,字符串都是

 1 a = [1,2]
 2 b = a#b和a内存地址相同,ab都只是列表对象[1,2]的引用,这个赋值操作并没有复制对象
 3 c = list[a]#c的内存地址就不同于a了,这是对象的复制
 4 d = a[:]#d的内存地址也不同于a,也是对象的复制
 5 #而list和切片复制都是浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。
 6 
 7 
 8 
 9 e = [1,[2,3]]
10 f = list[e]
11 id(e)
12 id(f)#不同于e的地址
13 id(e[1])
14 id(f[1])#与上条地址相同,所以,改变f[1],e[1]也会跟着变化,例如f[1][1] = 5,那么e[1][1]也讲变为5

 有没有一种方法,可以完全的拷贝对象呢?这叫做深拷贝

1 a =[1,[2,3]]
2 import copy
3 b =copy.deepcopy(a)
4 id(a[1])
5 id(b[1])#地址不同了跟上面的

 

以上是关于深拷贝,浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

代码学习PYTHON 深拷贝和浅拷贝

jquery怎样深拷贝一个数组

Python高级详解 深拷贝和浅拷贝

Python高级详解 深拷贝和浅拷贝

深拷贝-浅拷贝

iOS开发——深拷贝与浅拷贝详解