python中深拷贝和浅拷贝如何具体实现 ?请举例说明?
时间: 2024-12-20 09:15:17 浏览: 9
在Python中,当我们谈论对象的复制时,有两种主要类型的拷贝:浅拷贝(shallow copy)和深拷贝(deep copy)。以下是它们的具体实现和例子:
1. **浅拷贝**:
- 对于基本数据类型(如整数、浮点数、字符串等),它们本身就是不可变的对象,所以浅拷贝实际上是值的复制,不是真正的对象复制。
- 对于容器类型,比如列表(list)和字典(dict),如果元素是可以迭代的,浅拷贝会复制引用,而不是副本。例如:
```python
import copy
list1 = [1, 2, 3]
list2 = copy.copy(list1)
# 修改list2不影响list1
list2[0] = 'a'
print(list1) # 输出:[1, 2, 3]
print(list2) # 输出:['a', 2, 3]
```
- 如果容器包含不可变对象,浅拷贝会生成实际的副本。
2. **深拷贝**:
- `copy.deepcopy()`函数可以创建深度克隆,它会递归地复制嵌套的数据结构,包括所有元素。这意味着修改深拷贝不会影响原始对象。例如:
```python
import copy
list1 = [[1, 2], [3, 4]]
list2 = copy.deepcopy(list1)
list2[0][0] = 'x'
print(list1) # 输出:[[1, 2], [3, 4]],原列表未改变
print(list2) # 输出:[['x', 2], [3, 4]]
```
阅读全文