我之前从未使用2D或3D阵列,但我正在尝试制作迷宫。 在我的片段中,正方形是一个包含每个单元格实例的列表(因此在3x4迷宫中,正方形中将有12个实例) 然后我试图追加行,一行中所有正方形的列表,因此row [0]将包含前四个正方形实例,row [1]将是接下来的四个,等等。 row [x] .append(squares [y + z])抛出IndexError,我猜它是行[x]部分,但我不知道该怎么做才能修复它。我尝试使用extend而不是append。
numberOfRows = 3
numberOfColumns = 4
z = 0
for x in range(numberOfRows):
for y in range(numberOfColumns):
row[x].append(squares[y+z])
z += 4
答案 0 :(得分:1)
如果我猜对了,你想要:
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
中创建所有列表。
答案 1 :(得分:0)
这可以简化为以下内容:
>>> [squares[i:i+numberOfColumns] for i in range(0, len(squares), numberOfColumns)]
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]