看图理解深浅拷贝

深浅拷贝

list 封装的copy 方法实现对列表的浅拷贝,浅拷贝只拷贝一层,具体拿例子说:

In [38]: c =[1,3,5]

In [39]: cc = c.copy()

ccc分别指向一片不同内存,示意图如下:

这样修改cc的第一个元素,原来c不受影响:

In [40]: cc[0]=10 # 修改cc第一个元素

In [41]: cc
Out[41]: [10, 3, 5]

In [42]: c # 原来 c 不受影响
Out[42]: [1, 3, 5]

但是,如果内嵌一层列表,再使用copy时只拷贝一层:

In [32]: a=[[1,3],[4,2]]

In [33]: ac = a.copy()

In [34]: ac
Out[34]: [[1, 3], [4, 2]]

上面的示意图清晰的反映出这一点,内嵌的列表并没有实现拷贝。因此再修改内嵌的元素时,原来的列表也会受到影响。

In [35]: ac[0][0]=10

In [36]: ac
Out[36]: [[10, 3], [4, 2]]

In [37]: a
Out[37]: [[10, 3], [4, 2]]

要想实现深度拷贝,需要使用Python模块copy中的deepcopy方法。这是深拷贝,每一层都被拷贝。朋友们注意观察和上面浅拷贝的区别。

以上就是列表深浅拷贝的区别,大家在平时使用中注意区别。原创不易,欢迎大家三连支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值