首页 > 编程语言 > 详细

关于python的copy 和 deepcopy

时间:2020-03-30 17:02:20      阅读:61      评论:0      收藏:0      [点我收藏+]


python copy:

  浅拷贝:

  拷贝了对象指向的引用
  如果对象内部存在可变对象, 哪么对内部的可变对象的改变是会影响到其它对象的
  不是引用了被拷贝对象的地址, 而是拷贝对象容器中的元素地址
 

import copy


l1 = [1, 2, 3, 4, 5, 6]

d = copy.copy(l1)
print(d)        # [1, 2, 3, 4, 5, 6]
d.append(9)     #
print(d)        # [1, 2, 3, 4, 5, 6, 9]
print(l1)       # [1, 2, 3, 4, 5, 6]

# ------------------------------------------

l2 = [1, 2, 3, 4, [5, 6, 7]]
d2 = copy.copy(l2)
print(d2)         # [1, 2, 3, 4, [5, 6, 7]]
d2.append(9)
print(d2)         # [1, 2, 3, 4, [5, 6, 7], 9]
print(l2)         # [1, 2, 3, 4, [5, 6, 7]]

d2[4].append(0)
print(l2)         # [1, 2, 3, 4, [5, 6, 7, 0]]
print(d2)         # [1, 2, 3, 4, [5, 6, 7, 0], 9]

  深拷贝:
    直接拷贝了整个对象指向的内存并copy到另一个区域, 即使对象内部有可变对象

  

 1 import copy
 2 
 3 
 4 l1 = [1, 2, 3, 4, 5, 6]
 5 
 6 d1 = copy.deepcopy(l1)
 7 
 8 d1.append(8)
 9 print(d1)       # [1, 2, 3, 4, 5, 6, 8]
10 print(l1)       # [1, 2, 3, 4, 5, 6]
11 
12 # -----------------------------------
13 
14 l2 = [1, 2, 3, [4, 5]]
15 d2 = copy.deepcopy(l2)
16 
17 d2[3].append(6)
18 print(l2)       # [1, 2, 3, [4, 5]]
19 print(d2)       # [1, 2, 3, [4, 5, 6]]

 



头一次写博客, 有错误的地方还请指正。

关于python的copy 和 deepcopy

原文:https://www.cnblogs.com/deepstack/p/12599469.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!