【发布时间】:2011-08-09 22:28:40
【问题描述】:
我需要创建一个嵌套列表,深度为四级。在第四层,我需要系统地分配值。当第四级处于其第一个循环的中间时,无论分配的值如何,都会出现索引错误,正如您在代码下方的输出中看到的那样。
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
抄送 = 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 的回答:正如他所指出的,您的代码不是一个错误,而是两个错误)。此外,FWIW,如果您将理解中的内部
[AA, BB, CC, DD]简单地替换为 1,您将获得相同的最终结果,并摆脱最后一组嵌套 for 循环。 (顺便说一句,在这种情况下,我希望 Python 标准库有一个“自动增长列表”容器类,在本质上类似于 collections.defaultdict;然后,与 itertools.product 一起,可以在两行中编写代码。)跨度>
标签: python list for-loop nested variable-assignment