GITHUB address: https://github.com/CRH0
浅复制与深复制以及复制的问题(浅拷贝与深拷贝)
对于复制:
a = [1,[22,33],(44,55,66)]
b = a
b[2] += (77,88)
-->a,b
-->[1,[22,33],(44,55,66,77,88)], [1,[22,33],(44,55,66,77,88)]
可变与不可变对象引用同一个对象
对于浅复制:
import copy
a = [1,[22,33],(44,55,66)]
b = list(a) #b = a[:] b = copy.copy(a)
对于此例,浅复制产生之后,a与b不是同一个列表, 引用的对象是同一个[22,33],(44,55,66)
b[1].remove(33)
-->a,b
-->[1,[22],(44,55,66)], [1,[22],(44,55,66)]
b.append(77)
-->a,b
-->[1,[22],(44,55,66)], [1,[22],(44,55,66),77]
b[0] += 1
了解:+= 与 = xx + ? 有什么不同,其实说道不同那就是对于可变对象与不可变对象的差别
比如 c = [1,2,3] c += [4,5] 这个id(c)没有变化 d = (1,2,3) d += (4, 5) id(d)产生了变化也就是将其加后赋值给了另一个对象
接着上面那个例子
b[2] += (77,88)
b[1] += [44,55]
-->a,b
-->[1,[22,44,55],(44,55,66)], [1,[22,44,55],(44,55,66,77,88),77]
对于浅复制就说到这里
对于深复制:
e = copy.deepcopy(a)
这个将a中的对象复制了一份然后给了e的引用,上面的操作并不会影响e的值
python: copy与deepcopy
猜你喜欢
转载自blog.csdn.net/lalalala_CG/article/details/83902898
今日推荐
周排行