浅拷贝和深拷贝的值会不会变,高拷贝和低拷贝的区别

首页 > 经验 > 作者:YD1662022-10-24 22:44:50

前面我们曾经聊到列表从内存的角度是什么样的?有兴趣的可以关注我,看一下《python之从内存读写的角度,学习并玩转list》章节的内容。今天我们依然从内存图出发,带你看一下内存深处的关于深拷贝和浅拷贝的那些奥秘。

深拷贝和浅拷贝第一点,深拷贝和浅拷贝的解释

深拷贝:复制整个依赖的变量

浅拷贝:复制过程中只复制一层变量,不会复制深层变量所绑定的变量

第二点,深拷贝和浅拷贝的区别

深拷贝生成的新的列表和原列表没有关系

浅拷贝生成的列表如果修改的不是第一层变量,复制的列表会随之改变,但是如果改变的是第一层的变量,新列表不会修改

第三点,深拷贝和浅拷贝的内存图1.1 深拷贝内存图案例

演示代码:

import copy

list1=[1,[2,3]]

list2=copy.deepcopy(list1)

list1[1][0]=100

print list2[1][0]

浅拷贝和深拷贝的值会不会变,高拷贝和低拷贝的区别(1)

上图表示的是list2的深拷贝实现

浅拷贝和深拷贝的值会不会变,高拷贝和低拷贝的区别(2)

上图表示修改了list1[1][0]=100,此时对list2没有任何影响。

浅拷贝和深拷贝的值会不会变,高拷贝和低拷贝的区别(3)

所以list2[1][0]=2

1.2 代码解读

浅拷贝和深拷贝的值会不会变,高拷贝和低拷贝的区别(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.