python中浅拷贝和深拷贝
时间: 2023-09-29 13:02:17 浏览: 114
浅拷贝和深拷贝是Python中用于复制对象的两种方法。
浅拷贝是创建一个新的对象,但是新对象的元素是原对象的引用。换句话说,新对象与原对象共享内存中的数据。当原对象包含可变对象(如列表、字典等)时,对新对象的修改会影响原对象。可以使用copy模块的copy()函数或者切片操作符[:]来实现浅拷贝。
深拷贝是创建一个完全独立的新对象,新对象和原对象的元素都是独立的。换句话说,深拷贝会递归地复制原对象及其所有可变对象。对新对象的修改不会影响原对象。可以使用copy模块的deepcopy()函数来实现深拷贝。
下面是一个示例代码,演示了浅拷贝和深拷贝的区别:
```python
import copy
# 浅拷贝示例
original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)
shallow_copy[0] = 5
shallow_copy[2].append(5)
print(original_list) # [1, 2, [3, 4, 5]]
print(shallow_copy) # [5, 2, [3, 4, 5]]
# 深拷贝示例
original_list = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original_list)
deep_copy[0] = 5
deep_copy[2].append(5)
print(original_list) # [1, 2, [3, 4]]
print(deep_copy) # [5, 2, [3, 4, 5]]
```
在上述示例中,浅拷贝的修改会影响原对象的可变部分,而深拷贝则不会影响原对象。
阅读全文