我尝试在python 3.6.3中为游戏编写一些代码,当我尝试更改2d列表/数组(在列表内的列表中)中的值时,它会在以下位置更改该索引的值所有列表。有人知道为什么会这样吗?
我已经将问题抽象到发生错误的代码的确切部分。我尝试使用不同的数字和格式,但问题仍然存在。调试工具也无济于事。
#Strange error
list_1 = [0,0]
list_2 = [list_1, list_1, list_1]
list_2[0][1] = 1
print(list_2)
#Working normally
list_3 = [[0,0],[0,0],[0,0]]
list_3[0][1] = 1
print(list_3)
实际结果应该是两个列表具有相同的输出[0,1],[0,0],[0,0]。但是,第一个列表返回[0,1],[0,1],[0,1],而第二个列表正常工作,即使返回[0,1],[0,0],[0,0]这两个列表应该返回完全相同的输出。
答案 0 :(得分:0)
您刚刚在list2中创建了对list1的引用3次
您应该执行list2 = [list(list1),list(list1),list(list1)],这将创建list1的副本,而不仅仅是对其的引用。