Python:分层列表元素替换中的错误

时间:2018-11-26 06:27:11

标签: python-3.x chess

在尝试为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分层列表以匹配董事会列表……尽管看起来不应该如此。 为什么会这样,以及如何修改此代码以使其不起作用?

0 个答案:

没有答案