【发布时间】:2020-04-08 20:37:29
【问题描述】:
我们来看看下面的代码
board = [[0,0,0],[0,0,0],[0,0,0]]
versionsOfBoard = []
versionsOfBoard.append(board); #this will keep the versions of board array
print(versionsOfBoard);
# output
# [[[0,0,0],[0,0,0],[0,0,0]]]
# later I change few values in the board and append 'board' to my versions array
board[0][0] = 1
versionsOfBoard.append(board)
print(versionsOfBoard)
# output
# [[[1, 0, 0], [0, 0, 0], [0, 0, 0]], [[1, 0, 0], [0, 0, 0], [0, 0, 0]]]
# if you notice here, the 0th index value is also changed
board[1][2] = 1
versionsOfBoard.append(board)
print(versionsOfBoard)
# output
# [[[1, 0, 0], [0, 0, 1], [0, 0, 0]], [[1, 0, 0], [0, 0, 1], [0, 0, 0]], [[1, 0, 0], [0, 0, 1], [0, 0, 0]]]
每个索引值都显示'board'的最新状态。它正在引用董事会。 我尝试过使用 .append(board[:]) 和 .append(board.copy())。这两个选项也不能解决问题。
任何帮助将不胜感激
【问题讨论】:
-
试试
append(board.deepcopy())。copy()只下降一级。 -
谢谢@Prune。 deepcopy 为我工作。我做了 .append(copy.deepcopy(board))
标签: python arrays python-3.x list