python深拷贝(shallow copy)和浅拷贝(deep copy)

深拷贝和浅拷贝

浅拷贝(copy()):拷贝父对象,不会拷贝对象内部的子对象。

深拷贝(deepcopy()):是copy模块中的方法,完全拷贝了子对象和父对象

Python的copy模块提供了一个copy()函数,可以用来执行浅复制(shallow copy)。这个函数可以复制一个对象,包括列表对象,但不会复制对象的子对象。对于列表而言,这意味着创建了一个新列表,但列表中的元素仍然是原始列表中元素的引用。

import copy

a = [1, 2, 3]
b = a

print(id(a) == id(b))

b[0] = 11
print(a, b)

## 利用copy里面的函数实现浅拷贝
c = copy.copy(a)
print(id(a) == id(c))
c[1] = 222
print(a, c)

# 但是对于多维来说
a = [1, 2, [3, 4]]
c = copy.copy(a)
print(id(a) == id(c), id(a[2]) == id(c[2]))

# 实现深拷贝
e = copy.deepcopy(a)
print(id(e[2]) == id(a[2]))


posted @ 2024-10-26 11:04  awei040519  阅读(30)  评论(0)    收藏  举报