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

1 投票
2 回答
2081 浏览
提问于 2025-04-16 23:14

我需要创建一个嵌套列表,深度达到四层。在第四层,我需要有规律地分配一些值。但是在第四层的第一次循环中,不管我分配什么值,都会出现索引错误,下面的代码输出中可以看到这个问题。

    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

2 个回答

0
>>> 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个数字)有两个元素,外面一层有三个,以此类推……

你试着把它当成反过来的来用……

1

在这个代码里,循环的顺序需要调换一下。而且你多加了一层括号。

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)]

撰写回答