我正在尝试在 python 2.7 中构建一个 5x5 网格的游戏板,表示为二维列表。我尝试将其编写为board = [["O"]*cols]*rows
(列和行已被声明为 5),但是当我尝试编辑索引处的值时,它会更改整行。例如
cols = 5
rows = 5
board = [["O"]*cols]*rows
这打印:
[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
现在,当我尝试更改索引的值时,例如:
board[1][1] = "X"
它打印:
[['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O'], ['O', 'X', 'O', 'O', 'O']]
我只想更改第 1 列第 1 行的值。
我还尝试执行以下操作:
board = []
for i in xrange(5):
board.append(["O"]*cols)
这个工作就像我想要的那样。我想了解的是有什么区别?