在python中,自行创建一个包含数字、列表、字典、元祖的嵌套列表,对比使用赋值(“=”) 和拷贝(“copy”)方法的差异。
时间: 2024-09-15 20:07:13 浏览: 48
Python列表、元祖、字典、集合学习笔记文档(附Python源码)
在Python中,当你操作数据结构如列表(list)、字典(dict)、元组(tuple)等时,赋值操作(`=`)实际上是引用而非复制。这意味着如果你对原对象进行修改,无论是通过赋值还是直接操作,嵌套的其他引用都会受到影响。
例如:
```python
# 创建一个嵌套数据结构
nested_list = [1, [2, {'key': (3, 4)}]]
# 赋值操作
new_list = nested_list
nested_list[0] = 'string'
nested_list[1][0].append(5)
print(new_list) # 输出:['string', [2, {'key': (3, 4, 5)}]]
```
在这个例子中,`new_list`也是对原始`nested_list`的引用,所以改变其中一个会影响到另一个。
而要获取深度复制(真正的副本),你可以使用内置的`copy`模块,比如`copy.deepcopy()`方法:
```python
import copy
nested_list_copy = copy.deepcopy(nested_list)
nested_list[0] = 'modified_string'
print(nested_list_copy) # 输出:['modified_string', [2, {'key': (3, 4)}]]
```
这里的`nested_list_copy`是一个独立的数据结构,不会因为原列表的变化而变化。
阅读全文