Python: ist es eine C-artige for-Schleife verfügbar?
Kann ich etwas tun, wie dieses in Python?
for (i = 0; i < 10; i++):
if someCondition:
i+=1
print i
Ich muss in der Lage sein zu überspringen, einige Werte basierend auf einer Bedingung
EDIT: Alle die Lösungen, die bisher empfehlen beschneiden der ersten Reihe in die eine oder andere Weise, basierend auf einem bereits bekannten Zustand. Dies ist nicht nützlich für mich, so lassen Sie mich erklären, was ich tun will.
Möchte ich manuell (also nicht getopt) analysieren einige cmd-line args, wo jeder "keyword" hat eine bestimmte Anzahl von Parametern, so etwas wie dieses:
for i in range(0,len(argv)):
arg = argv[i]
if arg == '--flag1':
opt1 = argv[i+1]
i+=1
continue
if arg == '--anotherFlag':
optX = argv[i+1]
optY = argv[i+2]
optZ = argv[i+3]
i+=3
continue
...
was bist du eigentlich machen willst?
aktualisierte Frage mit mehr info...
Es ist immer
aktualisierte Frage mit mehr info...
Es ist immer
while
für Sie.InformationsquelleAutor Cristi Diaconescu | 2010-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Dinge, die Sie tun könnten, um Ihr problem zu lösen:
getopt
oder andere Modul dann.oder mehr tun fragile eigenen Verarbeitung:
InformationsquelleAutor SilentGhost
Ja, das ist, wie ich es tun würde,
BEARBEITEN
Basierend auf das update zu deiner ursprünglichen Frage... ich würde vorschlagen, Sie nehmen einen Blick auf optparse
optparse
. Parsen von Kommandozeilen-Argumenten manuell ist völlig unnötig.Offenbar optparse wurde in 2.7 und die neue Geschmacksrichtung ist genannt argparse. Sie beide scheinen in der Lage zu tun, was ich brauche, aber ich Frage mich, ob es lohnt sich die Lernkurve. Trotzdem, +1 für den Hinweis auf dieses Modul.
InformationsquelleAutor sberry
In python geschrieben wäre, wie
dort gehen Sie, das ist, wie zu schreiben Sie ein c-for-Schleife in python.
somecondition
wahr ist, erhöhen Siei
zweimal...aber das war ja in der original-Beispiel-code in der Frage, so dass ich dachte, dass war es, was er wollte.
InformationsquelleAutor Netzsooc
Seltsame Weise:
InformationsquelleAutor Charles Beattie
Sollten Sie verwenden
continue
zu überspringen, ein Wert, in C und Python.InformationsquelleAutor kennytm
Werden Sie wahrscheinlich nicht wirklich brauchen, die Indizes sind, müssen Sie wahrscheinlich die eigentlichen Elemente. Eine bessere Lösung wäre wahrscheinlich wie dieses:
InformationsquelleAutor Christian Oudard
Könnten Sie zuerst schalten Sie die argv-Liste in einen generator:
Könnte man dann Schritt für Schritt durch die Elemente, die Anrufung des Generators erforderlich:
Die Idee ist gut, aber warum konvertieren
sys.argv[1:]
zu einem generator Instanz eher als ein iterator? E. g.my_gen = iter(sys.argv[1:])
erhalten Sie die gleichen Ergebnisse wie Ihre Funktiong
.Auch, anstelle von
while
mittry: except StopIteration:
einer for-Schleife erreichen die gleiche Sache. Ganz einfach:for arg in my_gen
. Sie können immer nochmy_gen.next()
in der Schleife.InformationsquelleAutor Larry
Nur Werte, die nicht durch 3 teilbar.
InformationsquelleAutor Teodor Pripoae
Wenn Sie brauchen, um die Iteration über etwas, und ein index benötigt, verwenden Sie aufzählen()
die nicht die gleiche wie die Fragesteller die
InformationsquelleAutor catchmeifyoutry
Dein problem scheint zu sein, dass Sie sollten die Schleife nicht raw-Parameter, sondern analysierten Parameter. Ich schlage vor, Sie prüfen, ändern Sie Ihre Entscheidung, nicht die Verwendung von standard-Modul (wie die anderen).
InformationsquelleAutor Tony Veijalainen
das könnte die einfache Lösung für das problem, wenn Sie nur wollen, um eine Iteration durch das array durch überspringen von 4 Mitgliedern
InformationsquelleAutor Rushikesh Shinde