在python中使用for循环在嵌套列表中赋值

2024-09-30 12:12:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个嵌套列表,四层深。在第四个层面,我需要系统地分配价值观。当第四个级别处于其第一个循环的中间时,无论指定的值是什么,都会出现索引错误,正如您在代码下面的输出中看到的那样。在

    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]
^{pr2}$
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

Tags: in列表for错误range级别ddaa
2条回答

LC中的循环顺序需要颠倒。你还有一层额外的括号

fourNest = [[[[[AA, BB, CC, DD]
      for DD in range(5)]
      for CC in range(4)]    
      for BB in range(3)]
      for AA in range(2)]
>>> fourNest[0][0][0][0]
[[0, 0, 0, 0], [1, 0, 0, 0]]
>>> fourNest[0][0][0]
[[[0, 0, 0, 0], [1, 0, 0, 0]], [[0, 1, 0, 0], [1, 1, 0, 0]], [[0, 2, 0, 0], [1, 2, 0, 0]]]
...

所以最里面的列表(不考虑生成的4个数字)有两个元素,下一个是外部的3,依此类推。。在

你试着用相反的方式。。。在

相关问题 更多 >

    热门问题