Python - Möglichkeit zum Neustart einer for-Schleife, ähnlich wie "weiter" für while-Schleifen? [Duplikat]

8

Im Grunde brauche ich eine Möglichkeit, die Steuerung an den Anfang einer for-Schleife zurückzugeben und den gesamten Iterationsprozess tatsächlich neu zu starten , nachdem eine Aktion ausgeführt wurde, wenn eine bestimmte Bedingung erfüllt ist.

Was ich versuche, ist folgendes:

%Vor%

Wenn also ['berry', '||', '||', '||', 'pancake] in der Liste sind, werde ich mit:

enden

['berry', '||', 'pancake'] stattdessen.

Danke!

    
Georgina 13.09.2010, 22:34
quelle

8 Antworten

30

Ich bin mir nicht sicher, was Sie mit "Neustart" meinen. Möchten Sie von vorne beginnen oder einfach die aktuelle Iteration überspringen?

Wenn es Letzteres ist, dann unterstützen for loops continue genauso wie while loops:

%Vor%

Der obige Ausdruck druckt die Zahlen von 0 bis 9 mit Ausnahme von 5.

Wenn Sie davon ausgehen, dass Sie am Anfang der Schleife for neu beginnen, gibt es keine Möglichkeit, das zu tun, außer "manuell", z. B. indem Sie es in eine while -Schleife einfügen:

%Vor%

Das obige wird die Zahlen von 0 bis 5 ausgeben, dann von 0 wieder anfangen und so weiter und so weiter (nicht wirklich ein großartiges Beispiel, ich weiß).

    
Liquid_Fire 13.09.2010, 22:44
quelle
24
%Vor%

Das wird tun, was Sie zu haben scheinen. Warum Sie es tun möchten, ist eine andere Sache. Vielleicht sollten Sie sich Ihren Code ansehen und sicherstellen, dass Ihnen keine offensichtliche und einfachere Methode entgeht.

    
nmichaels 13.09.2010 22:44
quelle
5
  

eine Aktion, die den gesamten Prozess neu startet

Eine schlechte Art, an einen Algorithmus zu denken.

Sie filtern nur, d. h. entfernen Duplikate.

Und - in Python - ist es am glücklichsten, Kopien zu erstellen, nicht in del . Im Allgemeinen gibt es sehr wenig Aufruf, del zu verwenden.

%Vor%     
S.Lott 13.09.2010 22:56
quelle
4

Die unvermeidliche itertools-Version, weil es gerade zu mir kam:

%Vor%     
Jochen Ritzel 13.09.2010 23:26
quelle
2

Continue funktioniert für jede Schleife.

    
volting 13.09.2010 22:37
quelle
2

continue funktioniert auch in for-Schleifen.

%Vor%     
sdolan 13.09.2010 22:39
quelle
1

Wie Sie sehen können, führt die Beantwortung Ihrer Frage zu einem etwas komplizierten Code. Normalerweise kann ein besserer Weg gefunden werden, weshalb solche Konstrukte nicht in die Sprache eingebaut sind

Wenn Sie sich nicht sicher sind, itertools zu verwenden, sollten Sie stattdessen diese Schleife verwenden. Es ist nicht nur einfacher zu folgen als der Neustart für die Schleife, es ist auch effizienter, weil es keine Zeit verschwendet, Elemente, die bereits übergeben wurden, erneut zu überprüfen.

%Vor%     
John La Rooy 13.09.2010 23:45
quelle
0
%Vor%

Und das wiederholt sich übrigens von Entfernen Sie benachbarte Duplikate Elemente aus einer Liste

    
Tony Veijalainen 13.09.2010 23:32
quelle

Tags und Links