Python:3D 列表的索引错误

标签 python list 3d indexing

我以前从未使用过 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/

相关文章:

python - bt - 灵活的 Python 回测 - 如何获得每个给定日期的总投资组合值(value)/结果?

java - 插入时映射和列表值不明确 : java

python - 从列表中删除\r

matrix - 为什么使用四元数进行旋转?

c++ - 如何获取平面描述的多边形的顶点

opengl - 透视分割后的 3D 投影问题 : Z Value doesn't lie in [1, -1]

python - 如何使用 __import__ 函数从子模块中导入名称?

python - 如何使用 Python 确定 Google 日历中的当前事件?

python - 如何检查 float 字符串?

python - 权限错误 : Permission denied to reading CSV File in Python