初始化矩阵似乎链接行,以便当一行更改时,它们都会更改:
>>> grid = [[0]*5]*5
>>> grid
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
>>> grid[2][2] = 1
>>> grid
[[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
我怎么能避免这个?
grid = [[0]*5 for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
注意:[int]*5将int复制5次(但是复制int时只需复制值).[list]*5将对同一列表的引用复制5次.(复制列表时,复制指向内存中列表的引用).