Heim >Backend-Entwicklung >Python-Tutorial >Warum führt das iterative Entfernen von Elementen aus einer Python-Liste zu unerwarteten Ergebnissen?
Seltsames Verhalten beim iterativen Entfernen von Elementen in Python
In Python können seltsame Ergebnisse auftreten, wenn während der Iteration Elemente aus einer Liste gelöscht werden. Betrachten Sie den folgenden Code:
numbers = list(range(1, 50)) for i in numbers: if i < 20: numbers.remove(i) print(numbers)
Erwartete Ausgabe: [20, 21, ..., 49]
Tatsächliche Ausgabe: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, ..., 49]
Grund:
Das Problem ergibt sich aus der Änderung der Liste während der Iteration. Während der ersten Schleifeniteration wird 1 entfernt. Die nachfolgende Iteration zeigt jedoch nicht mehr auf 2 in der verkürzten Liste, sondern auf 3. Dies wird fortgesetzt, bis nur noch Elemente größer als 20 übrig bleiben.
Lösungen:
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: print("do something") numbers[i] = None numbers = [n for n in numbers if n is not None]
Es ist wichtig zu beachten, dass das Ändern der Länge einer Liste während der Iteration im Allgemeinen nicht empfohlen wird. Die bereitgestellten Lösungen bieten alternative Ansätze zum Erreichen des gewünschten Ergebnisses.
Das obige ist der detaillierte Inhalt vonWarum führt das iterative Entfernen von Elementen aus einer Python-Liste zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!