Warum sollten Sie beim Durchlaufen einer Python-Liste das Entfernen von Elementen vermeiden?

Barbara Streisand
Freigeben: 2024-10-19 11:16:29
Original
572 Leute haben es durchsucht

When Iterating Through a Python List, Why Should You Avoid Removing Items?

Python-Listen: Fallstricke beim Entfernen von Elementen während der Iteration

Das Durchlaufen einer Python-Liste bei gleichzeitigem Entfernen von Elementen kann zu unerwartetem Verhalten führen. Ein bemerkenswertes Beispiel ist das Folgende:

<code class="python">letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
for i in letters:
    letters.remove(i)</code>
Nach dem Login kopieren

Rätselhafterweise zeigt der letzte Ausdruck der Briefe, dass nur alle anderen Elemente entfernt wurden.

Grund für die Anomalie

Dieses Verhalten ergibt sich aus der Art und Weise, wie Python während der Iteration mit Änderungen an Iterables umgeht. In der Dokumentation heißt es ausdrücklich, dass das Ändern einer Sequenz, über die iteriert wird, im Allgemeinen unsicher ist, insbesondere für veränderliche Typen wie Listen.

Diese Vorgehensweise kann zu undefiniertem Verhalten und möglichen Änderungen in zukünftigen Python-Builds führen.

Korrekter Ansatz zum Entfernen aller Elemente

Um alle Elemente sicher aus einer Liste zu entfernen, verwenden Sie eine der folgenden Methoden:

  • Entf-Buchstaben[:], um alle zu löschen Elemente und Verweise auf das Listenobjekt.
  • letters[:] = [], um der vorhandenen Variablen eine neue leere Liste zuzuweisen, wobei Verweise auf das ursprüngliche Objekt intakt bleiben.
  • letters = [] um eine neue leere Liste zu erstellen und sie einer neuen Variablen zuzuweisen.

Handhabung der bedingten Elemententfernung

Für die bedingte Entfernung von Elementen erstellen Sie eine Kopie der Liste mithilfe der Slice-Syntax [:] auflisten:

<code class="python">commands = ["ls", "cd", "rm -rf /"]
for cmd in commands[:]:
    if "rm " in cmd:
        commands.remove(cmd)</code>
Nach dem Login kopieren

Alternativ können Sie die Filterfunktion verwenden, um unerwünschte Elemente auszuschließen:

<code class="python">commands = [cmd for cmd in commands if not is_malicious(cmd)]</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum sollten Sie beim Durchlaufen einer Python-Liste das Entfernen von Elementen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!