python中,赋值,浅拷贝,深拷贝的区别

2020-04-19  本文已影响0人  卅清

import copy

ls = ['d','f','a',[1,2,3]]

ll = ls# 赋值,仍然指向同一个地址,操作ll增删改查后,打印ls,结果与ll一样。

l_copy = copy.copy(ls)# 浅拷贝,l_copy重新指向了一个地址,但l_copy中嵌套的列表的指向仍然与ls嵌套中列表指向地址一样,所以对嵌套表进行操作时,浅拷贝和原表都会发生改变

l_deep_copy = copy.deepcopy(ls)# 深拷贝,l_deep_copy重新指向了一个地址,包括l_deep_copy中嵌套的列表。互不影响

print(id(ls))

print(id(ll))

print(id(l_copy))

print(id(l_deep_copy))

print("列表中嵌套的列表[1,2,3]指向")

print(id(ll[3]))

print(id(l_copy[3]))

print(id(l_deep_copy[3]))

l_copy[3].append(4444)

print(ll)

print(ls)

print(l_copy)

print(l_deep_copy)

上一篇 下一篇

猜你喜欢

热点阅读