所以,我正在尝试使用多维列表来制作ASCII游戏的地图。我有代码来初始化列表,
mapData = [[[0 for m in range(3)] for x in range(32)] for y in range(32)]
然后我尝试使用此代码访问和更改变量中的值
mapData[0][5][5] = 1
并收到此错误消息,
IndexError: list assignment index out of range
我尝试了很多东西,但无法解决任何问题。
答案 0 :(得分:2)
您最里面的列表只有三个单元格,因此尝试访问它上面的[5]
将无效。
索引从最外层(有32个条目)到最里面(有3个条目)。如果您希望最里面的列表包含6个或更多单元格,则需要调整for m in range(3)
循环。
如果您希望索引最里面列表的第一个单元格,可能需要反转索引:
mapData[5][5][0] = 1
再说一遍:
mapData[0]
返回最外层列表的第一个元素,由嵌套列表推导中的for y in range(32)
循环生成。[5]
中的mapData[0][5]
访问上一个结果的第6个元素,即for x in range(32)
循环中的列表。[5]
中的mapData[0][5][5]
尝试索引最内层列表,其中一个列表对象由[0 for m in range(3)]
生成。由于这些列表每个只有3 0
个值,因此会引发IndexError
异常。