2016-04-14 12 views
0

Ich möchte eine Liste von Listen in Python durchlaufen. Ich drucke alle Werte zuerst, dann nachfolgende Iterationen, lösche ich den letzten Wert, zum Beispiel:Iterate durch eine Liste in Python

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

In der obigen Liste, ich drucke:

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

und weiterhin mit allen anderen Listen.

Bitte helfen Sie mir mit dem besten Weg, dies zu tun, habe ich den folgenden Code, der mir nicht gibt, was ich will.

for list in sentence: 

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

Ist das der Korrekte Daten? Du hast die erste Unterliste als '[" near belle round about "]', eine 'liste' mit einer einzigen' str' aus allen vier Wörtern, aber aus deiner Beschreibung scheint es, als sollte es '[" near "," belle "," rund "," über "]', eine 'liste' von vier separaten' str', eine pro Wort. – ShadowRanger

+0

Ja sorry ich habe die Daten bearbeitet – leboMagma

+0

Brauchen Sie Rekursion? Oder geht es dir mit jeder Methode gut? – Adib

Antwort

2

Sie drucken die Rückkehr von pop, aber es klingt wie Sie wollen, was nach dem pop übrig geblieben ist. Versuchen Sie folgendes:

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 

Ihre Frage Titel rekursiv dies zu tun, fragt, aber Ihr Versuch war nicht rekursiv, und die Schritt Sie beabsichtigen, rekursiv zu sein, ist etwas unklar; Das Problem erfordert keine Rekursion.

+0

Vielen Dank!, Machte meinen Tag – 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

Wo verwenden Sie Rekursion? – Adib

+0

@Adib: Ich bin mir nicht sicher, ob das OP Rekursion im Sinne von CS wirklich will, ich denke, sie bedeuten nur, dass sie in eine verschachtelte Struktur bohren müssen. – ShadowRanger

+0

Ich bearbeitete den Beitrag und entfernte die Tags nach der OP-Antwort, vorausgesetzt, dass sie sich nicht um Rekursion kümmern – Adib

0

eine verschachtelte Liste Verständnis mit:

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

Sie Druck verwenden können, wenn Sie nicht über die Ausgabe wollen:

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

nb xrange verwenden, wenn 2 mit Python