如何使用' for'循环迭代Python 2.7中的嵌套列表索引项?

时间:2015-04-10 04:50:05

标签: python list python-2.7 loops nested

我有一个这样的清单:

nList = [[0,0,0],[3,2,1]],\ [[]],\ [[100,1000,110]],\ [[0,0,0],[300,400,300],[300,400,720],[0,0,120],[100,0,1320],[30,500,1450]] 

并且需要以这样的方式存储输出,以便在'\'之前的每个变量都出现,例如,在第一个'\'之前:

0 metres, 0 metres, 0 seconds
3 metres, 2 metres, 1 seconds

到目前为止,我已经为每个'\'之前的单个索引提出了这个问题,例如nList[4]

outputList = []

for distance in nList[4]:
    outputLlist.append('{} metres, {} metres, {} seconds'.format(*distance))

但是如何创建一个迭代所有for索引的nList循环,并将输出格式'x' metres, 'y' metres, 't' seconds存储在空列表outputList中?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

for i in range(1,len(nList)):
    for distance in nList[i]:
        outputLlist.append('{} metres, {} metres, {} seconds'.format(*distance))

我认为这会做你所要求的。

答案 1 :(得分:2)

因此,您的数据结构是列表列表的元组。 你需要两个循环。

outputList = []
for i in nList:
    for distance in i:
        outputList.append('{} metres, {} metres, {} seconds'.format(*distance))

但你也可以使用列表理解:

outputList = ['{} metres, {} metres, {} seconds'.format(*distance)) 
              for i in nList for distance in i]

答案 2 :(得分:1)

迭代列表中的每个子列表,并在输出之前检查每个元素是否有3个或更多条目:

nList = [[0,0,0],[3,2,1]], [[]], [[100,1000,110]], [[0,0,0],[300,400,300],[300,400,720],[0,0,120],[100,0,1320],[30,500,1450]] 

outputList = []

for subList in nList:
    for distance in subList:
        if len(distance) >= 3:
            outputList.append('{} metres, {} metres, {} seconds'.format(*distance))