page contents

深浅复制的区别

有些同学搞不清楚深浅复制的区别,本文讲解来啦!

浅复制

 # 浅拷贝:数据半共享(拷贝第一层的数据,具有自己单独的内存地址;嵌套层即第二层或其他层不拷贝,指向原有的内存地址)
 
 #定义一个由两层列表组成的值a
 a=[1,2,3,[4,5,6]]
 a_copy=copy.copy(a)
 
 print(a_copy)
 结果:
 [1, 2, 3, [4, 5, 6]]
 a[0]=5
 
 #输出更改后a的值
 print(a)
 结果:
 [5, 2, 3, [4, 5, 6]]
 
 #再看下a_copy的值
 结果:
 [1, 2, 3, [4, 5, 6]]
 #*从结果上看,改变a第一层元素的值,其浅拷贝a_copy的值不变
 
 a[3][1]=22
 
 print(a)
 结果:
 [1, 2, 3, [4, 22, 6]]
 #再看下a_copy的值
 结果:
 [1, 2, 3, [4, 22, 6]]
 #*从结果上看,改变a第二层元素的值,其浅拷贝a_copy的值改变

深复制

 改变对象的第一层元素的值、第二层元素的值,a_deepcopy都没有变化。
 import copy
 #定义一个由两层列表组成的值a
 a=[1,2,3,[4,5,6]]
 
 #深拷贝a的值,看看效果
 a_deepcopy=copy.deepcopy(a)
 print(a_deepcopy)
 #输出深拷贝a_deepcopy的值
 结果:
 [1, 2, 3, [4, 5, 6]]
 #改下a的第一层元素的值,看看深拷贝的a_deepcopy有没有变化
 a[2]=88
 
 print(a)
 结果:
 [1, 2, 88, [4, 5, 6]]
 
 结果:
 [1, 2, 3, [4, 5, 6]]
 
 a[3][1]=9
 
 #输出更改后a的值
 print(a)
 结果:
 [1, 2, 3, [4, 5, 108]]
 #再看下a_deepcopy的值
 结果:
 [1, 2, 3, [4, 5, 6]]
 #*从结果上看,改变a第二层元素的值,其深拷贝a_deepcopy的值依然不变

  • 发表于 2021-08-18 18:49
  • 阅读 ( 475 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

28 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章