2017-02-27 77 views
0

這不是一個家庭作業問題。與此非常相似的代碼是更大項目的基礎。自從我經常使用Python以來,這已經有一段時間了。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: 
    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 

我想要的代碼做的是,第一嵌套循環應該填充21 21陣列11對於數組10×10左上角的每個元素。然後第二個嵌套循環應該輸出該數組。我究竟做錯了什麼?謝謝你,我很困惑,因爲我覺得我之前一百萬次但它並不像轉向了已經解決了這個問題有望

+1

您板遍地包含相同的列表。你需要每行的新清單,例如。 'board = [[0] *(2 * width + 1)for x in range(2 * height + 1)]' –

回答

0

經典問題:[[0]*(2*width + 1)]*(2*height + 1)]創建一個「行」 [0]*(2*width + 1)然後的(2*height + 1)引用列表那一排。

要創建多個副本,您可以使用它代替:

[[0]*(2*width + 1)] for _ in range(2*height + 1)] 
+0

**拍自我**好吧謝謝 –

相關問題