使用copy()时,它会创建一个全新的数据,对kvps的更改不会影响copy var
aList = [1,2]
bList = [3,4]
kvps = { '1' : aList, '2' : bList }
theCopy = kvps.copy() # this creates totally new copy, not a reference?
kvps['1'][0] = 5 #this var kvps becomes { '1' : [5,2], '2' : [3,4] }?
sum = kvps['1'][0] + theCopy['1'][0] #must be 5+1 = 6
print(sum)
但正确答案是10?为什么
在kvps.copy()之后-这是否意味着拷贝“遵循”对kvps所做的任何更改但这称为参考?我对copy()和reference的术语感到困惑
拷贝是一个浅拷贝,它仍然保留对其原始源的引用。如果你愿意的话 复制到一个不同的对象一起,然后您需要导入复制模块 使用deepcopy方法
您正在创建dict的浅表副本,这实际上意味着您可以(重新)独立地分配两个dict中的键,因为原始dict和副本在内存中不引用同一对象。但是,不会复制这些值
如果要对这些值进行深度复制,请使用
copy.deepcopy
相关问题 更多 >
编程相关推荐