Python深浅复制

Python中深浅复制

深浅复制一般在列表嵌套列表的时候易考虑.

即复制后的数据会因为原数据的值改变而改变或者复制后的数据改变原数据也会跟着改变.

让我们以实例来展示.

>>> a = [1,2,3]
>>> b = [4,5,a]
>>> id(a)
2122777098952
>>> id(b[2])
2122777098952

可以看到b[2]实际指向的就是a,改变a的值那么b[2]会跟着变化.同理改变b[2]的值,原a也发生改变.

>>> import copy
>>> c = b.copy()
>>> id(c[2])
2122777098952

使用copy复制为浅复制,如果原a发生改变那么c,b都会改变.

>>> c = b[:]
>>> id(c[2])
2122777098952

同样使用切片的方式也为浅复制.

>>> c = copy.deepcopy(b)
>>> id(c[2])
2122778556488

使用copy中deepcopy来进行复制,其c[2]已不是指向a,即使改变了a或者b的值,c的值也不会发生变化.

这种复制相对于浅复制,被称为深复制.

猜你喜欢

转载自blog.csdn.net/One_of_them/article/details/79428902
今日推荐