有什么原因会发生以下情况?在这两种情况下,我们都将网格定义为3乘3的零数组,但是当我们将中间值更改为2时,三个值更改为2,而在第二种情况下,只有一个值更改为2。
grid=[[0]*3]*3
grid[1][1]=2
print(grid)
[[0, 2, 0], [0, 2, 0], [0, 2, 0]]
grid=[[0 for i in range(3)] for i in range(3)]
grid[1][1]=2
print(grid)
[[0, 0, 0], [0, 2, 0], [0, 0, 0]]
答案 0 :(得分:0)
使用grid=[[0]*3]*3
方法,grid
中的所有数组都拥有相同的内存地址。因此,如果您更改其中任何一个,则对所有这些显示相同的输出。
您会注意到所有这三个值都相同:
id(grid[0])
id(grid[1])
id(grid[2])