Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wirkt sich das Ändern der Iterationsvariablen einer For-Schleife nicht auf nachfolgende Iterationen in Python aus?

Warum wirkt sich das Ändern der Iterationsvariablen einer For-Schleife nicht auf nachfolgende Iterationen in Python aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-25 05:55:12521Durchsuche

Why Doesn't Modifying a For Loop's Iteration Variable Affect Subsequent Iterations in Python?

Manipulation von Iterationsvariablen in der For-Schleife von Python: Warum sich Änderungen nicht auf nachfolgende Iterationen auswirken

In Python werden For-Schleifen häufig zum Iterieren verwendet über eine Folge von Werten. Ein häufiges Missverständnis besteht jedoch darin, dass das Ändern der Iterationsvariablen während der Schleife Auswirkungen auf nachfolgende Iterationen haben kann.

Das Problem

Bedenken Sie den folgenden Python-Codeausschnitt:

for i in range(0, 10):
    if i == 5:
        i += 3
    print(i)

Wenn Sie diesen Code ausführen, können Sie mit einer Ausgabe rechnen sein:

0
1
2
3
4
8
9

Stattdessen wird jedoch Folgendes erzeugt:

0
1
2
3
4
8
6
7
8
9

Erklärung

Der Grund für dieses unerwartete Verhalten liegt in wie For-Schleifen in Python funktionieren. Anders als in einigen anderen Sprachen wie C erstellt Python keinen neuen Bereich für Variablen innerhalb der Schleife. Stattdessen wird die Iterationsvariable erneut an jeden Wert in der Sequenz gebunden.

Im angegebenen Code wird der Iterator i jeder Zahl in der Sequenz range(0, 10) zugewiesen. Wenn Sie i innerhalb der Schleife ändern, ändern Sie nur den aktuellen Wert des Iterators, nicht die Sequenz selbst. Die nachfolgenden Iterationen verwenden weiterhin die ursprünglichen Werte in der Sequenz, weshalb Sie die unerwartete Ausgabe sehen.

Die Abhilfe

Um das gewünschte Verhalten zu erreichen, müssen Sie die Iteration ändern Da sich die Variable auf nachfolgende Iterationen auswirkt, können Sie stattdessen eine While-Schleife verwenden. While-Schleifen ermöglichen es Ihnen, die Iterationsvariable innerhalb der Schleife selbst manuell zu erhöhen oder zu ändern:

i = 0
while i < 10:
    # do stuff and manipulate `i` as much as you like 
    if i == 5:
        i += 3

    print(i)

    # don't forget to increment `i` manually
    i += 1

Dieser Code erzeugt die erwartete Ausgabe:

0
1
2
3
4
8
9

Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern der Iterationsvariablen einer For-Schleife nicht auf nachfolgende Iterationen in Python aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn