python 自行创建一一个包含数字、列表、字典、元组的嵌套列表,对比使用赋值(“=”)和拷贝(“copy") 方法的差异。
时间: 2024-09-21 22:01:26 浏览: 26
详解Python直接赋值,深拷贝和浅拷贝
在Python中,你可以通过下面的方式创建一个嵌套列表,它包含了数字、列表、字典和元组:
```python
nested_list = [
[1, 2, 3], # 数字列表
['a', 'b', 'c'], # 字符串列表
{'key': 'value'}, # 字典
(4, 5, 6) # 元组
]
```
对于赋值和拷贝的区别,首先来看"="操作:
- 赋值("="): 如果对嵌套列表进行简单的赋值,比如 `new_list = nested_list`,这时实际上是引用了相同的内存地址。这意味着修改新的`new_list`会直接反映在原始的`nested_list`上。例如,如果在`new_list`中添加元素,`nested_list`也会增加。
```python
new_list = nested_list
new_list.append([7, 8, 9])
print(nested_list) # 输出: [[1, 2, 3], ['a', 'b', 'c'], {'key': 'value'}, (4, 5, 6), [7, 8, 9]]
```
然而,如果你想复制嵌套结构并独立操作,需要使用拷贝方法。这里我们以浅拷贝为例,因为Python的列表和字典是可变类型的,深拷贝则涉及到递归:
- 拷贝("copy"): 对于列表,可以使用`list()`函数得到浅拷贝;对字典,可以使用`dict()`;元组已经是不可变的,所以无需特殊处理。例如:
```python
shallow_copy_list = list(nested_list)
shallow_copy_dict = dict(nested_list[2])
shallow_copy_list.append([10, 11, 12])
print(shallow_copy_list) # 输出: [[1, 2, 3], ['a', 'b', 'c'], [10, 11, 12]]
# 修改原始字典不影响浅拷贝
nested_list[2]['new_key'] = 'new_value'
print(shallow_copy_dict) # 输出: {'key': 'value'}
```
阅读全文