Heim > Backend-Entwicklung > Python-Tutorial > Warum führt das Entfernen von Listenelementen während der Iteration in Python zu unerwarteten Ergebnissen?

Warum führt das Entfernen von Listenelementen während der Iteration in Python zu unerwarteten Ergebnissen?

Mary-Kate Olsen
Freigeben: 2024-12-25 07:07:09
Original
560 Leute haben es durchsucht

Why Does Removing List Elements During Iteration in Python Lead to Unexpected Results?

Unerwartetes Verhalten: Elemente aus einer Liste während der Iteration entfernen

Beim Versuch, eine Liste zu durchlaufen und bestimmte Elemente zu entfernen, die bestimmte Kriterien erfüllen, Wenn die Liste während des Iterationsprozesses geändert wird, kann ein unerwartetes Verhalten auftreten. Betrachten Sie den folgenden Python-Code:

numbers = list(range(1, 50))

for i in numbers:
    if i < 20:
        numbers.remove(i)

print(numbers)
Nach dem Login kopieren

Überraschenderweise ist das erhaltene Ergebnis:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
Nach dem Login kopieren

Wir würden erwarten, dass die Zahlen unter 20 entfernt werden, aber sie bleiben im Ergebnis. Dies liegt daran, dass die Liste während der Iteration geändert wird. Wenn das erste Element, 1, entfernt wird, verschiebt sich die Position der nachfolgenden Elemente und die Schleife fährt mit dem nächsten Element in der geänderten Liste fort, das nicht das erwartete ist.

Um dieses Problem genau zu lösen Beim Durchlaufen der Liste können wir Listenverständnisse oder direkte Änderungen verwenden. Listenverständnisse ermöglichen es uns, eine neue Liste nur mit den Elementen zu erstellen, die die angegebene Bedingung erfüllen:

numbers = [n for n in numbers if n >= 20]
Nach dem Login kopieren

Alternativ kann eine direkte Änderung mithilfe der Slice-Zuweisung durchgeführt werden:

numbers[:] = (n for n in numbers if n >= 20)
Nach dem Login kopieren

Durch die Änderung der Liste auf diese Weise wird die Iteration nicht beeinträchtigt und das gewünschte Ergebnis kann erzielt werden.

Das obige ist der detaillierte Inhalt vonWarum führt das Entfernen von Listenelementen während der Iteration in Python zu unerwarteten Ergebnissen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage