我想迭代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()
答案 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