Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wirkt sich das Ändern einer Liste in Python auf eine andere aus?

Warum wirkt sich das Ändern einer Liste in Python auf eine andere aus?

DDD
DDDOriginal
2024-11-02 12:37:02836Durchsuche

Why Does Modifying One List Affect Another in Python?

Unerwartet verknüpfte Listen in Python

Beim Arbeiten mit Listen in Python kann es zu unerwarteten Verhaltensweisen kommen. Lassen Sie uns verstehen, warum sich die Änderung einer Liste unerwartet auf eine andere auswirkt.

Problem:

Betrachten Sie den folgenden Python-Code:

<code class="python">v = [0, 0, 0, 0, 0, 0, 0, 0, 0]
vec = v  # Assignment by reference
vec[5] = 5</code>

Nachdem dieser Code ausgeführt wurde, Sowohl v als auch vec zeigen den geänderten Wert bei Index 5:

>>> print(vec)
[0, 0, 0, 0, 0, 5, 0, 0, 0]
>>> print(v)
[0, 0, 0, 0, 0, 5, 0, 0, 0]

Warum ändert sich v, obwohl es nicht explizit geändert wurde?

Das Problem verstehen:

Wenn Sie in Python einer neuen Variablen eine Liste zuweisen, erstellen Sie keine Kopie; Stattdessen erstellen Sie eine Referenz. Das bedeutet, dass sowohl v als auch vec auf dasselbe zugrunde liegende Listenobjekt im Speicher verweisen.

Lösung:

Um zwei separate Listen mit identischen Werten zu haben, müssen Sie eine erstellen eine Kopie mit dem list()-Konstruktor:

<code class="python">vec = list(v)  # Creates a copy</code>

Wenn Sie jetzt Änderungen an vec vornehmen, bleibt v davon unberührt.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern einer Liste in Python auf eine andere aus?. 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