Python的拷贝
Python中的拷贝有两种,一种是浅拷贝,一种是深拷贝,还有一种常用来比较深浅拷贝的区别的方式——赋值,他们的区别是什么呢?
赋值:
赋值是后的变量指向的内存地址与原变量的内存地址是同一个,相当于给这个内存地址了创建一个快捷方式,我们来看代码

运行后的结果是:

我们可以看到,li1和li2的值是一样的,他们的内存地址也是一样的,所以如果改变了li1的值,那么li2的值就会随之改变,相应地,如果改变了li2的值,li1的值也会随之改变

浅拷贝:
浅拷贝是将第一层的数据拷贝到另一个内存地址,我们来看代码:

那么这个拷贝第一层的数据是什么意思呢?来看第二段代码:

在修改了嵌套的列表中的值后,浅拷贝的li2中的相应的值也发生了改变,但是我们修改外层列表中的元素时,li2的值并没有发生改变,这就是浅拷贝
深拷贝:
深拷贝是将原变量中的所有数据都拷贝到另一个内存地址中去,代码如下:

运行后的结果如下:

可以看出,深拷贝后,不管原数值怎么改变,都不会影响拷贝后的结果
区别:
赋值:赋值后的变量指向的是该数据的内存地址,如果该数值发生改变,则被赋值变量的数值也随之改变
浅拷贝:浅拷贝拷贝的是变量中第一层的数据到另一个内存地址,更深层的数据不拷贝,如果原数据中深层次的数据发生改变,
拷贝后的数值也会发生改变
深拷贝:深拷贝拷贝的是变量中的所有数据到另一个内存地址,不管原数据怎么改变,深拷贝后的数值都不会变

浙公网安备 33010602011771号