用python代码举个深拷贝与浅拷贝区别的例子
时间: 2024-04-16 07:04:53 浏览: 91
深拷贝和浅拷贝都是用来复制一个对象,但是它们有着不同的方式和效果。具体来说,浅拷贝只复制对象的引用,而深拷贝会递归地复制整个对象及其所包含的所有子对象。下面是一个简单的例子来说明二者的区别:
```python
import copy
# 定义一个嵌套列表
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
# 深拷贝
deep_copy = copy.deepcopy(original_list)
# 修改原始列表中的第一个子列表
original_list[0][0] = -1
# 打印三个列表
print('original_list:', original_list)
print('shallow_copy:', shallow_copy)
print('deep_copy:', deep_copy)
```
输出:
```
original_list: [[-1, 2, 3], [4, 5, 6], [7, 8, 9]]
shallow_copy: [[-1, 2, 3], [4, 5, 6], [7, 8, 9]]
deep_copy: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
```
可以看到,修改原始列表中的第一个子列表后,浅拷贝和原始列表都发生了变化,因为它们共享同一个子列表对象的引用。而深拷贝则没有受到影响,因为它递归地复制了整个对象及其子对象。
相关问题
python浅拷贝和深拷贝
在 Python 中,拷贝分为浅拷贝和深拷贝两种方式。
浅拷贝是指创建一个新的对象,这个新对象有着原始对象的一些属性值,但是对于原始对象中的子对象,浅拷贝只是拷贝了一个引用,而不是创建一个新的子对象。也就是说,浅拷贝只是拷贝了对象的引用,而不是对象本身。
深拷贝是指创建一个新的对象,这个新对象有着原始对象的所有属性值,包括原始对象中的子对象。也就是说,深拷贝会递归地拷贝所有的子对象,直到所有的子对象都被拷贝到新的对象中。
在 Python 中,可以使用 copy 模块中的 copy() 函数来进行浅拷贝,使用 deepcopy() 函数来进行深拷贝。
下面是一个简单的例子来说明浅拷贝和深拷贝的区别:
```
import copy
# 浅拷贝
a = [1, 2, [3, 4]]
b = copy.copy(a)
b[2][0] = 5
print(a) # 输出 [1, 2, [5, 4]]
print(b) # 输出 [1, 2, [5, 4]]
# 深拷贝
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
b[2][0] = 5
print(a) # 输出 [1,2, [3, 4]]
print(b) # 输出 [1, 2, [5, 4]]
```
阅读全文