python - 为什么 list.copy() 方法很浅?
问题描述
在官方 Python 文档中说 list.copy() 返回列表的浅表副本。但是根据以下代码,它是深拷贝,因为一个列表的更改不会导致另一个列表的更改。
>>> num1 = [1,2,3,4,5]
>>> num2 = num1.copy()
>>> num1.append(9)
>>> num1
[1, 2, 3, 4, 5, 9]
>>> num2
[1, 2, 3, 4, 5]
问题是什么?哪里有错?
解决方案
这个例子将演示为什么这是一个浅拷贝
>>> num1 = [[1,2,3],[4,5,6]]
>>> num2 = num1.copy()
>>> num1[0].append(9)
>>> num1
[[1, 2, 3, 9], [4, 5, 6]]
>>> num2
[[1, 2, 3, 9], [4, 5, 6]]
由于原始列表包含可变元素,因此外部副本包含可变元素的浅拷贝。
推荐阅读
- linux - iTop Combodo 中的 OCS 库存集成
- mysql - Mysql left join 耗时太长
- reactjs - 如何避免 useEffect 中的无限循环?
- objective-c - 两条线段之间的距离
- c# - 如何擦除所有 Xamarin.Forms.Application.Current.Properties?
- javascript - 获取请求之间的竞争
- excel - 从 Excel VBA 调用 Bloomberg BQL 查询
- git - Git 无法为特定任务创建分支
- .net - SempahoreSlim 作为异步代码中的锁的正确用法是什么?
- postgresql - mkdir /mnt/data: 只读文件系统 Back-off 重启失败的 postgres 容器