In Python kann das Ändern einer Liste während der Iteration darüber zu unerwarteten Ergebnissen führen. Betrachten Sie den folgenden Code:
numbers = list(range(1, 50)) for i in numbers: if i < 20: numbers.remove(i) print(numbers)
Anstatt wie beabsichtigt Zahlen unter 20 zu entfernen, gibt dieser Code eine Liste aus, in der alle Zahlen unter 20 fehlen, zusammen mit 20 selbst.
Das Problem ergibt sich aus der Tatsache, dass durch das Entfernen eines Elements aus einer Liste die Position nachfolgender Elemente verschoben wird. Mit fortschreitender Schleife sind die überprüften Elemente nicht mehr die erwarteten, da die entfernten Elemente „Löcher“ in der Liste erzeugen.
Zum Beispiel wird während der ersten Iteration 1 entfernt, bei der nächsten Iteration jedoch prüft nicht 2; Stattdessen wird 3 geprüft, da die Liste gekürzt wurde. Dieses Verhalten setzt sich fort und führt zu einer falschen Ausgabe.
Um dieses Problem zu vermeiden, verwenden Sie alternative Methoden zum Ändern von Listen während der Iteration, wie zum Beispiel:
numbers = [n for n in numbers if n >= 20]
numbers[:] = (n for n in numbers if n >= 20)
for i, n in enumerate(numbers): if n < 20: numbers[i] = None numbers = [n for n in numbers if n is not None]
Diese Techniken tun es Ändern Sie die Länge der Liste während der Iteration nicht, um eine korrekte Elementverarbeitung und die gewünschte Ausgabe sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum führt das Ändern einer Python-Liste während der Iteration zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!