python中深拷贝和浅拷贝区别,python中深浅拷贝的区别
浅拷贝
复制模块中复制方法的实现。浅拷贝后,改变原对象中变量元素的值也会影响被拷贝的对象;更改原始对象中不可变元素的值不会影响复制的对象。
热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!
代码演示
导入副本
#定义一个列表,其中第一个元素是可变类型。
list1=[[1,2],费,66];
#制作简单副本
list 2=copy . copy(list 1);
#对象地址是否相同。
打印(id(list 1));
打印(id(list 2));
#结果:不同
46177816
46177936
#第一个元素地址是否相同。
print(id(list 1[0]);
print(id(list 2[0]);
#结果:相同
46240432
46240432
#第二个元素的地址是否相同。
print(id(list 1[1]);
print(id(list 2[1]);
#结果:相同
45547328
45547328
#更改第一个值以查看复制对象的更改。
list 1[0][0]=2;
打印(列表2);
#结果:复制的对象发生变化。
[[2,2],《费》,66]
#更改第二个值以查看复制对象的更改。
list 1[1]= ge ;
打印(列表2);
# Result:复制的对象没有改变。
[[2,2],费,66]相关推荐:《Python教程》
深拷贝
复制模块中deepcopy方法的实现。深度复制除了顶层复制之外,还会复制子元素。深度复制后,原对象和复制对象的所有变量元素地址都不相同。
代码演示
导入副本
#定义一个列表,其中第一个元素是可变类型。
list1=[[1,2],费,66];
#深层副本
list 2=copy . copy(list 1);
#对象地址是否相同。
打印(id(list 1));
打印(id(list 2));
#结果:不同
46177816
46177936
#第一个元素地址是否相同。
print(id(list 1[0]);
print(id(list 2[0]);
#结果:不同
49123856
49588784
#第二个元素的地址是否相同。
print(id(list 1[1]);
print(id(list 2[1]);
#结果:相同
45547328
45547328
#更改第一个值以查看复制对象的更改。
list 1[0][0]=2;
打印(列表2);
# Result:复制的对象没有改变。
[[1,2],《费》,66]
#更改第二个值以查看复制对象的更改。
list 1[1]= ge ;
打印(列表2);
# Result:复制的对象没有改变。
[[1,2],《费》,66]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。