3 回答

TA貢獻1805條經驗 獲得超9個贊
在使用類似grid[i].append(). 因為最初列表中沒有任何內容,而您指的是不可用的內容。因此,你的錯誤。:(
您可以改為在每個外部迭代中創建一個子列表,并附0加到內部迭代中的前一個子列表:
cols = 10
rows = 10
grid = []
for _ in range(rows):
grid.append([])
for _ in range(cols):
grid[-1].append(0)
print(grid)
# [[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, 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, 0, 0, 0, 0]]
將整個組合成一行:
grid = [[0 for _ in range(cols)] for _ in range(rows)]

TA貢獻1797條經驗 獲得超6個贊
你增加了i兩次。第一次進去for i in range(rows),第二次跟i += 1。刪除第二個語句,使其看起來像這樣:
cols = 10
rows = 10
grid = [[0 for x in range(cols)] for y in range(rows)]
for i in range(rows):
for j in range(cols):
grid[i].append([j])
代替:
for i in range(rows):
for j in range(cols):
grid[i].append([j])
i += 1
此外,這個變量初始化當然是不必要的: i = 0
如果您想找到替代方法來做到這一點:
grid = [[0 for x in range(cols)] for y in range(rows)]
您還必須使用嵌套數組初始化數組:
grid = []
for i in range(rows):
grid.append([])
for j in range(cols):
grid[i].append(0)

TA貢獻1876條經驗 獲得超6個贊
有幾個問題:
您不會
grid
在循環之前實例化一個空列表。在嘗試附加到這些子列表之前,您必須將子列表附加到外部列表。
迭代 a 時
range
,無需增加計數器。
所以這將起作用:
rows = 5
cols = 5
grid = []
for i in range(rows):
grid.append([])
for j in range(cols):
grid[i].append(0)
print(grid)
[[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]]
添加回答
舉報