Python深拷贝和浅拷贝详解,深拷贝 浅拷贝 python

  Python深拷贝和浅拷贝详解,深拷贝 浅拷贝 python

  本文介绍了Python中深度复制和浅层复制的区别,并通过示例代码进行了详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

  首先我们知道Python中有六种标准数据类型,分为可变和不可变。不可变:数(number),字符串(String),元组(Tuple)。可以变:(列表),字典(词典),设置(设置)。

  

浅拷贝

  更改原始对象中可变元素的值也会影响复制的对象。

  更改原始对象中不可变元素的值不会影响复制的对象。

  代码演示

  导入副本

  #定义一个列表,其中第一个元素是可变类型。

  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]

  

深拷贝

  深度复制除了顶层复制之外,还会复制子元素。

  深度拷贝后,原始对象和拷贝对象的所有可变元素地址都不相同。

  代码演示

  导入副本

  #定义一个列表,其中第一个元素是可变类型。

  list1=[[1,2],费,66];

  #深层副本

  list 2=copy . deepcopy(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]

  这就是这篇关于Python中深度复制和浅层复制的文章。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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