python 深复制和浅复制区别
时间: 2024-09-27 22:12:16 浏览: 32
深入浅析Python中list的复制及深拷贝与浅拷贝
在 Python 中,深复制(Deep Copy)和浅复制(Shallow Copy)是数据拷贝的两种方式,它们的区别在于是否对对象内部的数据结构进行完全独立的复制。
**浅复制**(shallow copy)是指创建一个新的引用,新对象只拥有原对象的引用,如果原对象是一个复杂的数据结构(如列表、字典等),那么新复制的对象会指向原对象的内存地址。这意味着对新复制对象的操作会影响到原对象。例如:
```python
import copy
list1 = [[1, 2], [3, 4]]
list2 = copy.copy(list1)
list2[0][0] = 5
print(list1) # 输出:[[5, 2], [3, 4]],因为 list2 的改变影响了原始 list1
```
**深复制**(deep copy)则是对整个数据结构进行递归的独立复制,包括嵌套的对象和数据。这意味着每个元素都会被复制到新的位置,形成一个新的独立副本,所以修改新复制的对象不会影响到原对象。例如:
```python
list1 = [[1, 2], [3, 4]]
list3 = copy.deepcopy(list1)
list3[0][0] = 6
print(list1) # 输出:[[1, 2], [3, 4]],因为 list3 的改变不影响原始 list1
```
总结一下,浅复制适用于简单的数据结构,而深复制则适用于需要保留所有数据独立性的复杂结构。
阅读全文