四、数据类型 10.不可变类型的深浅拷贝

不可变类型数据深浅copy

浅copy:副本对象和子对象都仅被引用,不会被copy
    深copy:若原对象中含有可变类型数据,则copy最外层对象和其中的可变对象,其余不可变对象仅被引用
            若原对象中不含可变类型数据,则副本对象和子对象都仅被引用,不会被copy

import copy

A = [1,2,3]
B = (4,5,6)
C = (A,B)
print('A:',A,id(A))
print('B:',B,id(B))
print('C:',C,id(C),' C[0]:',C[0],id(C[0]),' C[1]:',C[1],id(C[1]))

# 浅拷贝
# D = copy.copy(C)
# print('D:',D,id(D))


# 深拷贝
# 原对象中含有可变类型数据
D = copy.deepcopy(C)
print('D:',D,id(D),' D[0]:',D[0],id(D[0]),' D[1]:',D[1],id(D[1]))

# 原对象中不含可变类型数据
F = (B,(7,8),9,'不含可变类型数据')
print('F:',F,id(F),' F[0]:',F[0],id(F[0]),' F[1]:',F[1],id(F[1]))
E = copy.deepcopy(F)
print('E:',E,id(E),' E[0]:',E[0],id(E[0]),' E[1]:',E[1],id(E[1]))


A: [1, 2, 3] 1044774867464
B: (4, 5, 6) 1044905880536
C: ([1, 2, 3], (4, 5, 6)) 1044905907080  C[0]: [1, 2, 3] 1044774867464  C[1]: (4, 5, 6) 1044905880536
D: ([1, 2, 3], (4, 5, 6)) 1044905906824  D[0]: [1, 2, 3] 1044781494344  D[1]: (4, 5, 6) 1044905880536
F: ((4, 5, 6), (7, 8), 9, '不含可变类型数据') 1044776174760  F[0]: (4, 5, 6) 1044905880536  F[1]: (7, 8) 1044905875272
E: ((4, 5, 6), (7, 8), 9, '不含可变类型数据') 1044776174760  E[0]: (4, 5, 6) 1044905880536  E[1]: (7, 8) 1044905875272
上一篇:copy 依赖的某个maven依赖到指定的目录


下一篇:如何用Seaborn描绘线图,分面网格关联图,密度图,连接图,热力图,线性回归图,分面网格绘图