Heim > Backend-Entwicklung > Python-Tutorial > Warum führt das Ändern einer Liste während der Iteration zu unerwarteten Ergebnissen in Python?

Warum führt das Ändern einer Liste während der Iteration zu unerwarteten Ergebnissen in Python?

DDD
Freigeben: 2024-12-24 16:14:18
Original
799 Leute haben es durchsucht

Why Does Modifying a List During Iteration Cause Unexpected Results in Python?

Verstehen der Gefahren beim Ändern von Listen während der Iteration

Das Durchlaufen einer Liste, während Änderungen daran vorgenommen werden, kann aufgrund von Inkonsistenzen zwischen ihnen zu unerwartetem Verhalten führen den Zustand der Liste und das Verständnis des Iterators davon. Um dies zu veranschaulichen, betrachten Sie den folgenden Python-Code:

l = range(100)
for i in l:
    print(i)
    print(l.pop(0))
    print(l.pop(0))
Nach dem Login kopieren

Anstelle der erwarteten Ausgabe fortlaufender Zahlen erzeugt dieser Code ein eigenartiges Ergebnis. Der Grund liegt in der Tatsache, dass, während der Iterator die Liste l durchläuft, die Liste selbst geändert wird. Insbesondere entfernt die Methode pop(0) Elemente vom Anfang von l.

Um solche Inkonsistenzen zu verhindern, ist es wichtig, Änderungen am Container, auf dem iteriert wird, zu vermeiden. Eine gängige Lösung besteht darin, eine Kopie des Containers zu erstellen und die Kopie zu durchlaufen. In solchen Fällen, in denen das Ziel darin besteht, den ursprünglichen Container zu ändern, ist jedoch ein anderer Ansatz erforderlich.

Betrachten Sie den folgenden alternativen Code:

i = 0
while i < len(some_list):
    print(some_list[i])
    print(some_list.pop(0))
    print(some_list.pop(0))
    i += 1
Nach dem Login kopieren

In diesem Code verwenden wir eine While-Schleife, um die Iteration manuell zu steuern. Anstatt die Liste direkt zu durchlaufen, verwenden wir einen Index i, um auf die Elemente zuzugreifen und dann Elemente manuell aus some_list zu entfernen. Dadurch wird sichergestellt, dass die Schleife auf die Aktualisierungen von some_list.

reagiert

Das obige ist der detaillierte Inhalt vonWarum führt das Ändern einer Liste während der Iteration zu unerwarteten Ergebnissen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage