python-3.x - 二维数组和 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 中通过引用完成的。我建议您改为复制列表。例如,如果您使用的是 Python 3.x(>=3),请执行以下操作:
blackBoard = posB.copy()
您可以在此处找到更多信息:如何克隆或复制列表?
推荐阅读
- java - 如何让我的琐事答案与我的问题保持在随机数组中?
- php - 如何在许多文件中查找和替换字符串
- bash - 如何使用 awk 在 bash 中格式化电话号码
- java - 从路径获取 jar 文件,并更改其类名
- typescript - 如何修复“browser.takeScreenshot”代理错误?
- azure-web-app-service - 如何使网站站点在 Internet 上的 8080 端口上可见
- c# - Wpf mediaelement播放没有声音的视频
- android - 如何在 Android 中卸载 Travel Mate 应用程序?
- webpack - 使用 WebpackChain 配置带有 glob 的 import scss(gridsome 或 vue-cli)
- html - Html 内容中的视频不会出现在颤动上