在For循环中列出列表

问题描述:

如何在for循环中创建列表的列表?在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个元素)。在循环中如何处理这个问题的任何想法?

+0

'while'循环看起来有点无限......你没有显示你增加“a”的位置。 – nneonneo

+0

我编辑了代码。对于那个很抱歉! – user1620716

+0

什么是catid和NNCatelogue?名单?最好创建简短的,自包含的,可运行的示例。 –

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

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. 首先,在最开始的A = 0是多余的。在第一个for循环中,您使用a = 0两次执行 相同的事情。

  2. 二,为什么你要声明一个巨大的xy列表元素框架,在 顶部?随着您沿着 行进,您总是可以追加()您需要的东西。

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

    for n in range(len(catid)): 
    

您可以用列表扩展,像这样一个列表的列表:

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