如何在列表列表中修改元素的值?

时间:2017-09-10 00:44:59

标签: python list

我正在尝试更改(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]的一个元素而不会发生这种情况!

1 个答案:

答案 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]]