深复制浅复制python
时间: 2023-10-17 22:34:01 浏览: 109
python浅拷贝、深拷贝
在Python中,浅复制和深复制是用来创建对象副本的两种不同方式。
浅复制是创建一个新对象,该对象与原始对象共享相同的子对象。换句话说,浅复制仅复制了对象的顶层结构,而不会复制嵌套对象本身。可以使用浅复制来创建一个新的可变对象,该对象与原始对象具有相同的状态。在Python中,可以使用切片操作符[:]、copy()函数或copy模块的copy()函数实现浅复制。
下面是一个浅复制的示例:
```python
import copy
# 原始列表
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 浅复制
shallow_copy = original_list.copy()
# 修改副本中的子列表
shallow_copy[0][0] = 'A'
print(original_list) # 输出: [[1,2, 3], [4, 5, 6], [7, 8, 9]]
print(shallow_copy) # 输出: [['A', 2, 3], [4, 5, 6], [7, 8, 9]]
```
深复制则是创建一个完全独立的新对象,包括所有嵌套对象。换句话说,深复制会递归地复制嵌套对象本身,而不是共享它们。可以使用copy模块的deepcopy()函数来实现深复制。
下面是一个深复制的示例:
```python
import copy
# 原始列表
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 深复制
deep_copy = copy.deepcopy(original_list)
# 修改副本中的子列表
deep_copy[0][0] = 'A'
print(original_list) # 输出: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(deep_copy) # 输出: [['A', 2, 3], [4, 5, 6], [7, 8, 9]]
```
可以看到,深复制创建了一个全新的对象,修改副本中的子列表不会影响原始列表。
阅读全文