我需要創建一個嵌套列表,深度爲四級。在第四級,我需要系統地分配值。正如您可以在代碼下面的輸出中看到的那樣,當第四個級別位於第一個循環的中間時,無論賦值如何,我都會收到索引錯誤。在Python中使用for循環分配嵌套列表中的值
fourNest = [ [[[[[AA, BB, CC, DD]
for AA in range(2)]
for BB in range(3)]
for CC in range(4)]
for DD in range(5)]]
print fourNest #this prints as expected and assignments work manually
for AA in range(2):
print "AA = ", AA
for BB in range(3):
print " BB = ", BB
for CC in range(4):
print " CC = ", CC
for DD in range(5):
fourNest[AA][BB][CC][DD] = 1
print " DD = ", DD," ", fourNest[AA][BB][CC][DD]
AA = 0 BB = 0 CC = 0 DD = 0 1 DD = 1 1 DD = 2 1
Traceback (most recent call last):
File "C:/Python27/forListCreateTest", line 21, in <module>
fourNest[AA][BB][CC][DD] = 1
IndexError: list assignment index out of range
1+不錯的益智...(我喜歡gnibbler的回答最好:正如他指出的,你的代碼不是一個,而是兩個錯誤)。另外,如果用簡單的1代替理解中的內部[[AA,BB,CC,DD]],並且擺脫嵌套for循環的最後一組,則將得到相同的最終結果。 (順便說一下,在這種情況下,我希望Python標準庫有一個「autogrowing list」容器類,與collections.defaultdict類似;然後,與itertools.product一起,可以用兩行代碼) – kjo