Die Python for
Schleife hat selbst keine Unterstützung dafür. Sie können denselben Effekt mit einer break
-Anweisung erzielen:
In Python ist ein for
wirklich ein foreach
, das über einen "Iterator" oder ein "iterbares Objekt" iteriert. In Python 2.x erstellt die obige for
-Schleife eine Liste mit den Zahlen 1 bis einschließlich 7 und iteriert dann über die Liste. In Python 3.x erhält die obige Schleife ein "Iterator-Objekt", das nacheinander die Werte 1 bis einschließlich 7 ausgibt. (Der Unterschied liegt in der Funktion range()
und was sie zurückgibt. In Python 2.x können Sie xrange()
verwenden, um ein Iterator-Objekt zu erhalten, anstatt eine Liste zuzuweisen.)
Ich habe Ihr n
-Objekt nicht angezeigt, weil i
auf dieselben Werte gesetzt wird, die darin enthalten wären. Wenn Sie tatsächlich eine Liste hatten, über die Sie iterieren können, ist es gut, dass Python direkt darüber iteriert, anstatt die Variable i
zu verwenden, um die Liste zu indizieren. Wenn Sie noch eine Indexvariable benötigen, können Sie sie mit enumerate()
wie folgt erhalten:
Sie können eine while
-Schleife mit der gleichen Art von Logik schreiben (aber in Python ist &&
buchstabiert and
, und ||
ist buchstabiert or
); oder Sie können eine for-Schleife verwenden, die über eine Sequenz iteriert und dann zusätzliche Logik hinzufügt, um aus der Schleife auszubrechen.
In Python bevorzugen wir keine Ganzzahlen, um in einen Container zu indizieren. Dies würde tatsächlich viel von unserem Code zerstören, da wir die Datentypen nicht zur Kompilierzeit überprüfen und einige Container nicht indiziert werden können. In einen Container einzutauchen ist bereits ein Design-Geruch: Die Tatsache, dass alles in einem sequentiellen Container ist, soll bedeuten, dass keines der Elemente "speziell" ist, oder wir hätten sie getrennt gehalten. Iteration ist Iteration, und wir sollten nicht aus dem Weg gehen, um es komplizierter zu machen.
Angenommen, Sie möchten den i-ten Punkt von n irgendwo in der Schleife haben, speichert enumerate
die Eingabe von n[i]
überall - der Wert wird in der Variablen item
Beachten Sie, dass die Schleife automatisch beendet wird, wenn die Länge von n kleiner als 5 ist
Hier ist eine Möglichkeit, zwei oder mehr Bedingungen mit der für -Schleife zu haben, was die -Frage eigentlich ist . Der Punkt, den ich versuche zu machen, ist, dass es gemacht werden kann, aber es ist nicht sehr pythonisch und es ist im Allgemeinen keine gute Idee, Code aus einer anderen Sprache Zeile um Zeile neu zu schreiben.
%Vor% Pythons for
ist nicht wie die for
in Sprachen, die auf C-Syntax basieren. In Python iteriert for
über eine Sequenz, während in C eine Schleife ausgeführt wird, während eine Bedingung wahr ist. Das ist ein grundlegender Unterschied.
Das C-like for
kann grob durch folgenden Code ersetzt werden:
(Es gibt einige Komplikationen von break
und continue
, aber lassen Sie uns diese jetzt ignorieren.)
Dieses Umschreiben zeigt auch eine Möglichkeit, was Sie in Python machen wollen: Verwenden Sie while
:
In Ihrem speziellen Fall ist es jedoch am einfachsten, for
mit einer geeigneten Indexliste zu verwenden:
range
gibt eine Liste von ganzen Zahlen (0, 1, 2, ...) zurück und Sie möchten, dass die Liste auf 5 oder die Länge Ihres Arrays, je nachdem, welcher Wert kleiner ist, gesetzt wird. Der obige Code erreicht das.
Die for-Anweisung in Python iteriert eine "Liste" von Objekten (ich setze die Liste in Anführungszeichen, weil ich es im generischen Sinne meine, sie kann über alles, was iterierbar ist, iterieren).
Um eine bedingte Schleife zu codieren (anstatt bis zur Beendigung zu iterieren), verwenden Sie while:
%Vor%Nun, um nur zu vervollständigen, könnte Ihr Beispiel auch wie folgt geschrieben werden:
%Vor%oder:
%Vor%Tags und Links python