3 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
在使用類似grid[i].append(). 因?yàn)樽畛趿斜碇袥](méi)有任何內(nèi)容,而您指的是不可用的內(nèi)容。因此,你的錯(cuò)誤。:(
您可以改為在每個(gè)外部迭代中創(chuàng)建一個(gè)子列表,并附0加到內(nèi)部迭代中的前一個(gè)子列表:
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]]
將整個(gè)組合成一行:
grid = [[0 for _ in range(cols)] for _ in range(rows)]

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
你增加了i兩次。第一次進(jìn)去for i in range(rows),第二次跟i += 1。刪除第二個(gè)語(yǔ)句,使其看起來(lái)像這樣:
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
此外,這個(gè)變量初始化當(dāng)然是不必要的: i = 0
如果您想找到替代方法來(lái)做到這一點(diǎn):
grid = [[0 for x in range(cols)] for y in range(rows)]
您還必須使用嵌套數(shù)組初始化數(shù)組:
grid = []
for i in range(rows):
grid.append([])
for j in range(cols):
grid[i].append(0)

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
有幾個(gè)問(wèn)題:
您不會(huì)
grid
在循環(huán)之前實(shí)例化一個(gè)空列表。在嘗試附加到這些子列表之前,您必須將子列表附加到外部列表。
迭代 a 時(shí)
range
,無(wú)需增加計(jì)數(shù)器。
所以這將起作用:
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]]
添加回答
舉報(bào)