Heim >Backend-Entwicklung >Python-Tutorial >Warum wird beim Zuweisen einer Liste zu einer neuen Variablen in Python keine separate Kopie erstellt?

Warum wird beim Zuweisen einer Liste zu einer neuen Variablen in Python keine separate Kopie erstellt?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 07:43:30555Durchsuche

Why does assigning a list to a new variable in Python not create a separate copy?

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!

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