在For循环中列出列表

时间:2012-10-10 15:36:35

标签: python list for-loop

如何在for循环中列出列表?

以下是我现在编码的内容:

    a = 0
    xy=[[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]]]
    for liness in range(len(NNCatelogue)):
        a=0
        for iii in range(len(NNCatelogue[liness])):

            while a < len(catid):

                if catid[a]==NNCatelogue[liness][iii]:

                    xyiii = (catid[a], a)
                    xy.append(xyiii)   
                a += 1

我得到的输出是一个冗长的对列表,正如预期的那样。它看起来有点像:

     [...,('C-18-1262', 30908),
     ('C-18-1264', 30910),
     ('C-18-1265', 30911),
     ('C-18-1267', 30913),
     ('C-18-1250', 30896),
     ('C-18-1254', 30900),...]

我想把这个配对列表变成一对列表。有1268次迭代,每个列表的长度应为12.(所以1268列表中每个都有12个元素)。有关如何在循环中处理此问题的任何想法吗?

3 个答案:

答案 0 :(得分:4)

也许是这样的。请注意,我直接在列表上使用迭代来节省大量不必要的索引。

xy = []
for line in NNCatelogue:
    l = []
    for c in line:
        for a, ca in enumerate(catid):
            if ca == c:
                l.append((ca, a))
    xy.append(l)

如果您正在使用内部循环来搜索类别索引,正如我怀疑的那样,字典可能是避免内循环的有用补充。

答案 1 :(得分:1)

我有一些友好的建议:

  1. 首先,最开始的a = 0是多余的。你这样做 在第一个for循环中,a = 0,同样的事情两次。

  2. 其次,为什么要为xy声明一个庞大的列表元素框架 顶端?您可以随时追加()您需要的东西 沿。

  3. 最后,你的while循环只是一个简单的for循环:

    for n in range(len(catid)):
    

答案 2 :(得分:0)

您可以使用列表扩展来制作列表列表,如下所示:

list_of_lists = [[j for j in range(0, 3)] for _ in range(0, 3)]

哪个输出3x3列表:

[ [0, 1, 2], 
  [0, 1, 2], 
  [0, 1, 2]
]