Ich wollte nur eine Alternative posten, die genearally nutzbar mehr sein könnte. Die meisten vorhandenen Lösungen verwenden einen Schleifenindex, um dies zu vermeiden. Aber Sie müssen keinen Index verwenden - der Schlüssel hier ist, dass im Gegensatz zu einer for-Schleife, bei der die Schleifenvariable ausgeblendet ist, die Schleifenvariable offen liegt.
Sie können tun, sehr ähnliche Dinge mit Iteratoren/Generatoren:
x = [1,2,3,4,5,6]
xi = iter(x)
ival = xi.next()
while not exit_condition(ival):
# Do some ival stuff
if ival == 4:
xi = iter(x)
ival = xi.next()
Es ist nicht so sauber, aber noch immer die Möglichkeit, die Schleife Iterator selbst zu schreiben.
Normalerweise, wenn Sie denken, dass Sie dies tun möchten, ist Ihr Algorithmus falsch, und Sie sollten es sauber umschreiben. Wahrscheinlich möchten Sie stattdessen einen Generator/Coroutine verwenden. Aber es ist zumindest möglich.
danke Perrow, nicht viel von einem Python Person ... noch. – gnomed
Nur zur Erinnerung: Stellen Sie mit einer while-Schleife sicher, dass Sie eine Abbruchbedingung haben, die immer erfüllt werden kann. – Brandon
Ich denke, das wird beendet, wenn i> = n – gnomed