Heim >Backend-Entwicklung >Python-Tutorial >Warum wirkt sich das Ändern einer Listenvariablen in Python auch auf eine andere ihr zugewiesene Variable aus?
Unerwartete Listenmutationen: Die Auswirkungen von Referenzen verstehen
In Python stellen Listenvariablen Referenzen auf im Speicher gespeicherte Arrays dar. Wenn Sie eine Listenvariable einer anderen zuweisen (z. B. vec = v), wird tatsächlich die Adresse des Arrays übergeben, anstatt das Array selbst zu kopieren.
Das bedeutet, dass alle an einer Liste vorgenommenen Änderungen dies tun wirken sich auch auf die andere Liste aus, die auf dieselbe Speicheradresse verweist. Betrachten Sie beispielsweise den folgenden Code:
<code class="python">v = [0,0,0,0,0,0,0,0,0] vec = v vec[5] = 5</code>
Nach der Ausführung des obigen Codes enthalten sowohl v als auch vec die folgenden Werte:
[0, 0, 0, 0, 0, 5, 0, 0, 0]
Dies geschieht, weil vec und v beide referenzieren das gleiche Array im Speicher. Wenn der Wert am Index 5 in vec auf 5 geändert wird, wird die Änderung nicht nur in vec, sondern auch in v widergespiegelt, da beide Variablen auf dasselbe zugrunde liegende Array verweisen.
Um echte Kopien einer Liste zu erstellen , verwenden Sie die Methode copy() oder den Konstruktor list() mit der Originalliste als Argument, wie unten gezeigt:
<code class="python">vec = v.copy() vec = list(v)</code>
Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern einer Listenvariablen in Python auch auf eine andere ihr zugewiesene Variable aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!