python的深浅拷贝

python深浅拷贝

拷贝

lt=[1,2,3]
lt2=lt
lt.append(4)
print(lt)
# 因为列表是可变类型,所以lt值变化,lt2的值也会跟着变化
print(lt2)

[1,2,3,4]

[1,2,3,4]

浅拷贝

import copy
lt=[1,2,3,[4,5,6]]
lt2= copy.copy(lt)
lt[3].append(7)
print(lt)
print(lt2)
lt.append(4)
print(lt)
print(lt2)

[1, 2, 3, [4, 5, 6, 7]]
[1, 2, 3, [4, 5, 6, 7]]
[1, 2, 3, [4, 5, 6, 7], 4]
[1, 2, 3, [4, 5, 6, 7]]

深拷贝

import copy

l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.deepcopy(l1)

l1.append('g')

print(l1)
print(l2)

['a', 'b', 'c', ['d', 'e', 'f'], 'g']
['a', 'b', 'c', ['d', 'e', 'f']]

牢记:拷贝/浅拷贝/深拷贝 只针对可变数据类型

三者的定义

拷贝:当l2为l1的拷贝对象时,l1内的可变类型变化,lt2变化;l1内不可变类型变化,l2变化

简单的赋值

浅拷贝:当l2位l1的浅拷贝对象时,l1内的可变类型变化,l2变化;l1内的不可变类型变化,l2不变化

copy.copy() 可变数据的类型中的内置方法.copy()

深拷贝: 当l2为l1的深拷贝对象时,l1内的可变类型变化,l2不变化;l1内的不可变类型变化,l2不变化

copy.deepcopy()

原文地址:https://www.cnblogs.com/aden668/p/11311145.html