Heim >Backend-Entwicklung >Python-Tutorial >Warum ändert das Ändern von „i' in einer Python-Schleife nicht die Elemente der Liste?

Warum ändert das Ändern von „i' in einer Python-Schleife nicht die Elemente der Liste?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 18:15:17299Durchsuche

Why Doesn't Modifying `i` in a Python Loop Change the List's Elements?

Listenänderung in Python-Schleifen verstehen

Wenn Sie versuchen, Elemente innerhalb einer Liste zu ändern, während Sie sie mithilfe einer Schleife durchlaufen, kann es zu einem Problem kommen Problem, bei dem die Änderungen scheinbar nicht bestehen bleiben. Dieses Verhalten ergibt sich aus der Art und Weise, wie Python innerhalb von Schleifen zugewiesene Variablen verarbeitet.

Kernproblem

Wenn Sie in Python eine Variable innerhalb einer Schleife zuweisen, die auf ein Element in a verweist list (z. B. für i in li:) ändern Sie nicht die Liste selbst, sondern erstellen einen neuen Verweis auf dieses Element. Wenn Sie also versuchen, i zu ändern, ändern Sie nicht wirklich den Wert in der Liste.

Beispiel

Bedenken Sie den folgenden Code:

li = ["spam", "eggs"]
for i in li:
    i = "foo"

print(li)  # Output: ["spam", "eggs"]

Obwohl Sie i innerhalb der Schleife „foo“ zugewiesen haben, bleibt der Wert von li unverändert, da i nicht direkt auf die Elemente in li verweist, sondern eher eine Kopie von sie.

Lösungen

Um Listenelemente während einer Schleife zu ändern, haben Sie mehrere Möglichkeiten:

  1. Listenverständnis: Erstellen Sie eine neue Liste mit den geänderten Elementen, wie Sie es in Ihrem Beispiel mit [foo for i in li].
  2. Indizierte Schleife: Verwenden Sie eine Schleife, die die Indizes der Liste durchläuft (wie für idx in range(len(li))) und weisen Sie li[ den geänderten Wert zu idx].
  3. Enumerate: Verwenden Sie enumerate, um gleichzeitig über Indizes und Elemente zu iterieren (z. B. für idx, Element in enumerate(li)), sodass Sie die Listenelemente direkt ändern können.

Das obige ist der detaillierte Inhalt vonWarum ändert das Ändern von „i' in einer Python-Schleife nicht die Elemente der Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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