迭代python中的列表

时间:2016-04-14 03:12:56

标签: python list

我想迭代python中的列表列表。我首先打印所有值,然后是后续迭代,我删除最后一个值,例如:

mylists=[["near", "belle", "round", "about"],[" vue"," bus"," stop"],["sammy"],["mombasa","road"]]

在上面的列表中,我打印:

"near belle round about"
"near belle round"
"near belle"
"near"

并继续使用所有其他列表。

请帮助我做最好的方法,我有以下代码,不能给我我想要的。

for list in sentence:

    while len(list) >0:
        print list.pop()

3 个答案:

答案 0 :(得分:2)

您正在从pop打印回复,但听起来您想要在pop之后留下什么。试试这个:

for alist in mylists:           # Use alist, not list, to avoid shadowing list built-in
    while alist:                 # Faster equivalent to while len(alist) > 0:
        print(' '.join(alist))   # Join and print current value
        alist.pop()              # Remove last, finished when emptied

你的问题标题要求递归地执行此操作,但您的尝试不是递归的,并且您想要递归的步骤有点不清楚;这个问题根本不需要递归。

答案 1 :(得分:0)

使用嵌套列表理解:

[[' '.join(x[:i]) for i in range(len(x), 0, -1)] for x in mylists]

如果您不想要输出,可以使用print:

[[print(' '.join(x[:i])) for i in range(len(x), 0, -1)] for x in mylists];

如果使用python 2

,则使用xrange

答案 2 :(得分:-1)

for list in mylists:     #iterator for outer list
    while len(list) >0:  #iterator for inner list , length of inner list > 0
        print list       #print elements in the inner list 
        list.pop()       #pop the last element of the inner list