我正在尝试更改(row, col)
中board
位置的元素,这是一个列表列表。教授给我们的当前版本创建了一个副本并将其返回。因此,我认为这很耗时:
# Add a piece to the board at the given position, and return a new board (doesn't change original)
def add_piece(board, row, col):
return board[0:row] + [board[row][0:col] + [1,] + board[row][col+1:]] + board[row+1:]
要进行就地更改,我尝试做(就像在C ++中一样):
def add_piece(board, row, col):
board[row][col]=1
return board
但是我认为这不会修改board
,因为输出不正确。有人可以告诉我如何在现场更改它,即确保每次原始board
本身被修改?谢谢!
编辑:显然,这不是MVC - 有人可以指出需要添加的内容吗?我得到的输出是没有必要的,因为我只想要更改board[row][col]
的一个元素而不会发生这种情况!
答案 0 :(得分:1)
您的代码在正确的上下文中有效。这就是人们要求MCVE的原因。
from pprint import pprint
board = [[1,2,3],
[4,5,6],
[7,8,9]]
def add_piece(board, row, col):
board[row][col]=1
add_piece(board,1,1)
pprint(board,width=20)
输出:
[[1, 2, 3],
[4, 1, 6],
[7, 8, 9]]