如何解决在 Python 3.8 中修改生成的列表导致奇怪的行为
所以我试图用 Python 解决 N 个皇后问题,我在我的解决方案类中使用以下语句生成了我的棋盘:
self.board = [[0] * self.dimension] * self.dimension
其中 dimension 被初始化为定义皇后数量的值,从而定义棋盘的大小
在获得可能位置的列表(元组列表,保存在类变量 queen_positions 中,其中每个元组在棋盘上都有一个位置)后,我尝试使用以下方法打印解决方案:
def print_board(self):
"""
Prints the board
"""
for i,j in self.queen_positions:
self.board[i][j] = 'Q'
print(self.board)
令我震惊的是,它没有更新索引指定的特定坐标,而是更新了其他坐标。例如,对于位置 (0,1),更新后,我的板子看起来像这样:
[[0,'Q',0],[0,0]]
我注意到,如果我一开始没有生成板,而是将其硬编码为 4x4 列表,则不会发生这种情况。
来自空闲
board = [[0,[1,1,1],[2,2,2],[3,3,3]]
for i,j in [(1,1),(2,2)]:
print(f"i is ${i} and j is ${j}")
board[i][j] = 'Q'
>>> board
[[0,3]]
我在这里遗漏了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。