2016-06-07 6 views
0

Gegeben die Liste: a = [1, 2, 3, 4 5] in einer for Schleife, nehme an, dass das aktuelle Element 2 ist, und das nächste Element ist 3. Wenn eine Bedingung erfüllt ist, wie kann ich machen der nächste Punkt ist wieder 2, was bedeutet, dass die Iteration von 2 statt 3 fortgesetzt werden sollte?python - Wie man eine Iteration in einer for-loop-Liste zurückzieht

a = [1, 2, 3, 4, 5] 

for item in a: 
    print item 
    if condition: 
     do something, and go back to previous iterator 

würde der Ausgang sein:

1 
2 
2 
3 
4 
5 
+0

Die Lösung dieses Duplikats ist unnötig allgemein, weil es sich mit der Mechanik von Iteratoren im Allgemeinen befasst. Für eine Liste könnte dies leicht mit einer while-Schleife anstelle von for durchgeführt werden. –

+1

Was meinst du genau? Worauf hängt die Bedingung ab? Müssen Sie 3 erreichen, um festzustellen, dass Sie 2 erneut verwenden müssen? –

+0

[Siehe auch hier] (http://stackoverflow.com/questions/2777188/making-a-python-iterator-go-backwards), wenn Sie das fragen. – ninehundred

Antwort

1

einer unendlichen Schleife Vorsicht, und es ist nicht sehr Pythonic.

i = 0 
a = [1, 2, 3, 4, 5] 
hasBeenReset = False 
while i < len(a): 
    if a[i] == 3 and not hasBeenReset: 
     i = 1 
     hasBeenReset = True 
    print(a[i]) 
    i += 1 
+0

Dieser Code ist eine Endlosschleife. –

+1

Ich aktualisiert, um die Ausgabe genau wie im Beispiel in der ursprünglichen Frage zu tun. – dyagmin

Verwandte Themen