深拷贝和浅拷贝

#深拷贝

#浅拷贝
#(1)等号
# list1 = [11,22,33,['a','b']]
# list2 = list1
# list1.append(44)
# print(list1,list2,id(list1),id(list2))
# [11, 22, 33, ['a', 'b'], 44] [11, 22, 33, ['a', 'b'], 44] 43425416 43425416

#(2)浅拷贝 copy
# import copy
# c = [11,22,33,['a','b']]
# d = copy.copy(c)
# c.append(44)
# c[3].append('c')
# print(c,d,id(c),id(d))
# #[11, 22, 33, ['a', 'b', 'c']] [11, 22, 33, ['a', 'b']] 43803848 43800456
# print(id(c[3]),id(d[3]))
# #43738248 43738248

# #深拷贝 deepcopy
import copy
c = [11,22,33,['a','b']]
d = copy.deepcopy(c)#
c.append(44)
c[3].append('c')
print(c,d,id(c),id(d))
#[11, 22, 33, ['a', 'b', 'c'], 44] [11, 22, 33, ['a', 'b']] 43931272 43933640
print(id(c[3]),id(d[3]))
#43929800 43931464
'''
等号:属于浅拷贝,不改变id地址,所以改变一个变量另外一个变量也会改变
浅拷贝:第一层数据的id号会改变,单数数据里面的id号不会改变,所以一个变量改变,另外一个变量不会改变,
但是第一个变量的更深的数据改变时,另外一个变量对应的数据会改变吧
深拷贝deepcopy:会改变id号,包括元素里面的元素的id号,所以一个变量改变,另外一个变量不会改变(所有数据)
'''

  

猜你喜欢

转载自www.cnblogs.com/zxf123/p/8907341.html