在尝试为Tic Tac Chess的Python版本编写代码时,我遇到了我认为是错误的事情。
def add_piece(piece_state, pos, init):
board = init
print(init)
board[pos[0]][pos[1]] = piece_state
print(init)
return board
cur_board_array = [
['_', "_", "_", "_"],
["_", "_", "_", "_"],
["_", "_", "_", "_"],
["_", "_", "_", "_"]]
print("prev_board_array" + str(cur_board_array))
added_piece_board = add_piece("A", (1, 1), cur_board_array)
print("cur_board_array" + str(cur_board_array))
输出如下:
prev_board_array[['_', '_', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_']]
[['_', '_', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_']]
[['_', '_', '_', '_'], ['_', 'A', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_']]
cur_board_array[['_', '_', '_', '_'], ['_', 'A', '_', '_'], ['_', '_', '_', '_'], ['_', '_', '_', '_']]
让我感到困惑的是,变量cur_board_array被更改了...即使从外观上来说,它也不应更改。 发生错误时的主要位置似乎是:
board[pos[0]][pos[1]] = piece_state
因为它不仅更改了init分层列表,而且还更改了cur_board_array分层列表以匹配董事会列表……尽管看起来不应该如此。 为什么会这样,以及如何修改此代码以使其不起作用?