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

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

2.1 浅拷贝内存图案例

演示代码:

import copy

list1=[1,[2,3]]

list2=copy.copy(list1)

list1[1][0]=100

print list2[1][0]

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

上图表示的list2的浅拷贝

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

上图表示修改list1[1][0]=100,很容易知道list2[1][0]也随之改变,但是如果修改的是list[0]的值,list2[0]的值是不会发生变化的,因为复制的是一层的变量,虽然list1和list2值都是1,但是在内存中的地址空间是不一样的,修改的list1[0],发生改变的是list1的第0号元素的地址,所以对list2没有影响。

所以list2[1][0]=100

2.2 代码解读

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

注意:

一、如果此时修改的是list[0]=100,list2[0]不会随之改变,因为list2复制的是list1的一层地址。

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

上一页123下一页

栏目热文

文档排行

本站推荐

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