2017-01-18 8 views
1

In einer Lernübung wurden wir gebeten, eine mehrdimensionale Liste zu durchlaufen und alle ihre Werte in einer einzigen Funktion/for-Schleife zu drucken.Eine Liste in Python rekursiv durchlaufen

Mein Gehirn blieb stecken auf den Grundlagen, wie eine rekursive Funktion funktionieren sollte, durch einige Online-Beispiele kam ich auf, was ich dachte, war die Antwort, aber es stoppt bei der ersten Liste mit Werten, die es findet.

Was war der Fehler meines hier trainierten Zuges?

def walk(l): 
    for v in l: 
     if type(v) is list: 
      return walk(v) 
     else: 
      print(v) 

l = [ 

    [1,2,3], 
    [4,5,6], 
    [7,8,9] 
] 

walk(l) 

>>1 
>>2 
>>3 

Antwort

2

Entfernen Sie die return-Anweisung, wie es Ihnen aus, die in die nächste Iteration in der for-Schleife stoppt (wenn Sie Spaziergang nennen (l), überprüft er die erste Liste Unter und stellt fest, dass es sich um eine Liste und dann auf return stoßen, dies stoppt die Ausführung der aktuellen Funktion und so wird nicht mehr zur nächsten Iteration gesprungen, sondern nur walk ([1,2,3]) ausgeführt und die Ergebnisse ausgedruckt:

def walk(l): 
    for v in l: 
     if type(v) is list: 
      walk(v) 
     else: 
      print(v) 

walk(l) 
1 
2 
3 
4 
5 
6 
7 
8 
9 
+0

Oh! Die meisten Beispiele für rekursive Funktionen, die ich online gefunden habe, waren zurück, aber ich sehe, warum es hier keinen Sinn ergibt. – Mojimi

+0

Ja. Aber hier in Ihrem Beispiel verwenden Sie es nur für Nebenwirkungen, Sie müssen nichts zurückgeben. – Psidom

Verwandte Themen