2016-04-14 4 views
0

Я хочу перебирать список списков в python. Я печатаю все значения первого, то последующие итерации, я удалить последнее значение, например:Итерация через список в 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() 
+2

Является ли это правильные данные? У вас есть первый подписок как '[" near belle round about "]', 'list' с одной строкой всех четырех слов, но из вашего описания кажется, что это должно быть' ["near", " belle "," round "," about "]', 'list' из четырех отдельных' str', по одному на каждое слово. – ShadowRanger

+0

Да, жаль, что я отредактировал данные – leboMagma

+0

Вам нужна рекурсия? Или вы в порядке с любым методом? – Adib

ответ

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 

Ваш вопрос название спрашивает об этом рекурсивно, но ваша попытка не была рекурсивной, и на каком шаге вы собираетесь быть рекурсивными несколько неясно; проблема вообще не требует рекурсии.

+0

Большое спасибо!, Сделал мой день – leboMagma

-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 
+1

Где вы используете рекурсию? – Adib

+0

@Adib: Я не уверен, что OP на самом деле хочет рекурсии в смысле CS, я думаю, они просто означают, что им нужно развернуть вложенную структуру. – ShadowRanger

+0

Я отредактировал сообщение и удалил теги после ответа OP при условии, что они не заботятся о рекурсии – Adib

0

с помощью вложенного списка понимания:

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

Вы можете использовать печать, если вы не хотите, выхода:

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

пи использовать xrange при использовании питона 2