Python数组-更改一个值会更改多个插槽

时间:2019-06-12 02:37:49

标签: python arrays

有什么原因会发生以下情况?在这两种情况下,我们都将网格定义为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]]

1 个答案:

答案 0 :(得分:0)

使用grid=[[0]*3]*3方法,grid中的所有数组都拥有相同的内存地址。因此,如果您更改其中任何一个,则对所有这些显示相同的输出。

您会注意到所有这三个值都相同:

id(grid[0])
id(grid[1])
id(grid[2])