python 自行创建一一个包含数字、列表、字典、元组的嵌套列表,对比使用赋值(“=”)和浅拷贝(“copy") 以及深拷贝方法的差异。
时间: 2024-09-21 21:01:29 浏览: 38
元组列表字典(莫烦python基础)
在Python中,当我们处理复杂的数据结构如列表、字典和元组的嵌套组合时,理解赋值操作("=")、浅拷贝("copy")和深拷贝("deepcopy")之间的区别很重要。
1. 赋值(="): 当你将一个复合数据结构赋值给另一个变量时,这通常只是创建了一个指向原始内存位置的引用。也就是说,改变其中一个副本会影响另一个。例如:
```python
original = [1, [2, 3], {'key': 'value'}]
nested_list = original
# 改变嵌套的一个元素
nested_list[1][0] = 'new_value'
print(original) # 输出: [1, ['new_value', 3], {'key': 'value'}]
```
2. 浅拷贝("copy"): `copy()`函数对序列类型做浅复制,这意味着它会复制最外层的列表和字典,但是内部的嵌套对象还是引用的原始对象。因此,改变其中的对象仍然会影响到原始数据。
```python
import copy
shallow_copy = copy.copy(nested_list)
shallow_copy[1][0] = 'another_new_value'
print(original) # 输出: [1, ['another_new_value', 3], {'key': 'value'}]
```
3. 深拷贝("deepcopy"): `deepcopy()`函数则是深度复制,它会递归地创建新对象的副本,包括所有嵌套的对象。这样可以完全独立于原始对象,修改深拷贝不会影响原对象。
```python
from copy import deepcopy
deep_copy = deepcopy(nested_list)
deep_copy[1][0] = 'yet_another_new_value'
print(original) # 输出: [1, ['yet_another_new_value', 3], {'key': 'value'}]
```
总结:
阅读全文