初始化多维列表后,Python列表分配超出范围

时间:2013-12-21 11:58:11

标签: python list

所以,我正在尝试使用多维列表来制作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

我尝试了很多东西,但无法解决任何问题。

1 个答案:

答案 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异常。