码迷,mamicode.com
首页 > 其他好文 > 详细

深拷贝,浅拷贝

时间:2018-01-26 20:55:53      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:地址   post   import   方法   一个   也会   body   gpo   imp   

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

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

 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])#地址不同了跟上面的

 

深拷贝,浅拷贝

标签:地址   post   import   方法   一个   也会   body   gpo   imp   

原文地址:https://www.cnblogs.com/saolv/p/8360790.html

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