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]]
添加回答
举报