python 浅拷贝和深拷贝
时间: 2023-10-12 07:19:48 浏览: 73
在Python中,浅拷贝和深拷贝是两种不同的拷贝方式。
浅拷贝(shallow copy)是指创建一个新对象,但是它包含的是原始对象中的引用,而不是对象本身的副本。也就是说,新对象中的某些元素与原始对象中的元素是共享的。可以使用`copy`模块的`copy()`函数来进行浅拷贝。
例如:
```python
import copy
a = [1, 2, [3, 4]]
b = copy.copy(a)
print(a) # [1, 2, [3, 4]]
print(b) # [1, 2, [3, 4]]
# 修改a中的元素
a[0] = 5
a[2][0] = 6
print(a) # [5, 2, [6, 4]]
print(b) # [1, 2, [6, 4]]
```
可以看到,对于列表中的嵌套列表,浅拷贝只是复制了其引用,所以修改了`a`中的嵌套列表,`b`中的嵌套列表也会发生变化。
深拷贝(deep copy)是指创建一个新对象,同时递归地拷贝它所包含的对象,因此原始对象和副本是完全独立的。可以使用`copy`模块的`deepcopy()`函数来进行深拷贝。
例如:
```python
import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
print(a) # [1, 2, [3, 4]]
print(b) # [1, 2, [3, 4]]
# 修改a中的元素
a[0] = 5
a[2][0] = 6
print(a) # [5, 2, [6, 4]]
print(b) # [1, 2, [3, 4]]
```
可以看到,深拷贝创建了一个完全独立的副本,所以修改了`a`中的元素,`b`中的元素不会发生变化。
阅读全文