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!