python中深拷贝和浅拷贝区别,python中深浅拷贝的区别

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: