首页 > 解决方案 > 二维数组和 for 循环

问题描述

以下代码是更大程序的一部分。它引起了一个问题,在尝试调试它时,我决定打印二维数组 'posB' 并且它随着循环的每次迭代而不断变化,即使我似乎从未改变它。

blackBoard = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1],[5,2,3,4,6,3,2,5]]
possibleMoves = [[6,0,5,0],[6,1,5,1],[6,2,5,2],[6,3,5,3]]
posB = blackBoard
for move in possibleMoves:
    print(posB)
    blackBoard = posB
    blackBoard[move[2]][move[3]] = blackBoard[move[0]][move[1]]
    blackBoard[move[0]][move[1]] = 0

谢谢,如果您能解释发生了什么,请告诉我。

标签: python-3.x

解决方案


发生这种情况是因为列表分配是在 Python 中通过引用完成的。我建议您改为复制列表。例如,如果您使用的是 Python 3.x(>=3),请执行以下操作:

blackBoard = posB.copy()

您可以在此处找到更多信息:如何克隆或复制列表?


推荐阅读