1

我以前从未使用过 2D 或 3D 数组,但我正在尝试制作迷宫。在我的代码片段中,正方形是一个包含每个单元格实例的列表(因此在 3x4 迷宫中,正方形中将有 12 个实例)然后我试图追加到行,一行中所有正方形的列表,所以行[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
4

2 回答 2

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事先创建所有列表。

于 2012-12-06T01:04:28.397 回答
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]]
于 2012-12-06T00:51:48.147 回答