我以前从未使用过 2D 或 3D 数组,但我正在尝试制作一个迷宫。 在我的代码片段中,方 block 是一个包含每个单元实例的列表(因此在 3x4 迷宫中,方 block 中有 12 个实例) 然后,我尝试将一行中所有正方形的列表附加到 row,因此 row[0] 将包含前四个正方形实例,row[1] 将包含接下来的四个正方形实例,依此类推。 row[x].append(squares[y+z]) 抛出 IndexError,我猜这是 row[x] 部分,但我不确定如何修复它。我尝试使用扩展而不是附加。
numberOfRows = 3
numberOfColumns = 4
z = 0
for x in range(numberOfRows):
for y in range(numberOfColumns):
row[x].append(squares[y+z])
z += 4
最佳答案
如果我猜对了,你想要:
numberOfRows = 3
numberOfColumns = 4
z = 0
squares = range(numberOfRows * numberOfColumns)
row = [[] for _ in xrange(numberOfRows)]
for x in range(numberOfRows):
for y in range(numberOfColumns):
row[x].append(squares[y+z])
z += 4
print row
也就是说,您只是缺少 row
定义。
编辑:
阅读OP的评论后,似乎考虑以下替代方案对于这种情况是值得的:
row = []
for x in range(numberOfRows):
row.append([squares[y+z] for y in range(numberOfColumns)])
z += numberOfColumns
因此,您不必事先创建 row
中的所有列表。
关于Python:3D 列表的索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735183/