Python嵌套循环的行为与我期望的不同
这不是家庭作业问题。与此非常相似的代码是更大项目的基础。我已经有一段时间没有经常使用python了Python嵌套循环的行为与我期望的不同,python,arrays,Python,Arrays,这不是家庭作业问题。与此非常相似的代码是更大项目的基础。我已经有一段时间没有经常使用python了 width = 10 height = 10 board = [[0]*(2*width + 1)]*(2*height + 1) for k in range(height): for j in range(width): if (k%2 == 1): board[k][j] = 11 result = [] for i in board:
width = 10
height = 10
board = [[0]*(2*width + 1)]*(2*height + 1)
for k in range(height):
for j in range(width):
if (k%2 == 1):
board[k][j] = 11
result = []
for i in board:
for j in i:
result.append(str(j))
result.append(" ")
result.append('\n')
print("".join(result))
这是输出,与代码一样直接复制和粘贴:
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0
我打算让代码做的是,第一个嵌套循环应该为数组左上角10×10中的每个元素填充21×21数组。然后第二个嵌套循环应该输出该数组。我做错了什么?谢谢你,我很困惑,因为我觉得我已经解决了这个问题一百万次了,但结果并不像预期的那样。经典问题:
[[0]*(2*width+1)]*(2*height+1)]
创建一个“行”[0]*(2*width+1)
然后创建一个对该行的引用列表
要创建多个副本,您可以使用以下方法:
[[0]*(2*width + 1)] for _ in range(2*height + 1)]
你的棋盘上反复出现同样的列表。您需要为每一行创建一个新列表,例如,对于范围(2*高度+1)内的x,board=[[0]*(2*宽度+1)]