2013-12-21 75 views
0

所以,我試圖使用多維列表來爲ASCII遊戲製作一張地圖。我有一些代碼初始化列表,初始化多維列表後超出範圍的Python列表賦值

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 

我已經嘗試了很多東西,但無法想出任何東西。

回答

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] in mapData[0][5][5]試圖索引最內層列表,[0 for m in range(3)]生成的列表對象之一。因爲這些列表每個只有3個0值,所以引發了一個IndexError異常。
+0

因此,它是以相反的順序?這很有道理,謝謝! – Aearnus