Heim >Backend-Entwicklung >Python-Tutorial >Warum wird beim Zuweisen einer Liste zu einer neuen Variablen in Python keine separate Kopie erstellt?
Unerwartete Listenmutation
Beim Erstellen einer Liste wie v = [0,0,0,0,0,0,0,0 ,0], könnten Sie davon ausgehen, dass durch das Zuweisen einer neuen Liste zu einer Variablen eine separate Referenz erstellt wird. Code wie der folgende kann jedoch unerwartetes Verhalten zeigen:
<code class="python">vec = v vec[5] = 5</code>
Sowohl vec als auch v enthalten jetzt den Wert 5 am Index 5. Warum passiert das?
Referenzzuweisung
In Python sind Listen veränderliche Objekte. Durch die Zuweisung von vec = v wird keine neue Kopie der Liste erstellt. Stattdessen weist es eine Referenz auf v zu. Sowohl vec als auch v verweisen auf dasselbe zugrunde liegende Listenobjekt im Speicher.
Alle an vec oder v vorgenommenen Änderungen wirken sich auf die ursprüngliche Liste aus, da es sich um dieselbe Liste handelt. Aus diesem Grund ändert sich auch v, wenn vec[5] geändert wird.
Lösung
Um eine separate Kopie der Liste zu erstellen, verwenden Sie die Funktion list():
<code class="python">vec = list(v)</code>
Dadurch wird ein neues Listenobjekt erstellt, das eine Kopie der Elemente von v enthält. Alle an vec vorgenommenen Änderungen wirken sich nicht auf v aus und umgekehrt.
Das obige ist der detaillierte Inhalt vonWarum wird beim Zuweisen einer Liste zu einer neuen Variablen in Python keine separate Kopie erstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!