对于args= ['', '0', 'P1', 'with', '10']
和students=[['1', '2', '3', 6]]
,它会打印:
[[['1', '2', '3', 6]]]
[[['10', '2', '3', 6]]]
预期产出为:
[[['1', '2', '3', 6]]]
[[['1', '2', '3', 6]]]
但它以某种方式改变了backup_list
任何快速解决方案?
backup_list.append(students[:])
print(backup_list)
students[int(args[1])][0] = args[4]
print(backup_list)
答案 0 :(得分:1)
[:]
制作一份浅色副本。你需要一份深刻的副本:
import copy
backup_list.append(copy.deepcopy(students))
完整计划:
import copy
backup_list = []
args= ['', '0', 'P1', 'with', '10']
students=[['1', '2', '3', 6]]
backup_list.append(copy.deepcopy(students))
print(backup_list)
students[int(args[1])][0] = args[4]
print(backup_list)
输出:
[[['1', '2', '3', 6]]]
[[['1', '2', '3', 6]]]
documentation解释了浅拷贝和深拷贝之间的区别:
浅拷贝构造一个新的复合对象然后 (尽可能)将引用插入到找到的对象中 原来。
深层复制构造一个新的复合对象,然后递归地插入 将原件中找到的物品复制到其中。