„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 10.11.2024
Durchsuche:703

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. Allerdings kann Code wie der folgende unerwartetes Verhalten zeigen:

vec = v
vec[5] = 5

Sowohl vec als auch v enthalten jetzt den Wert 5 am Index 5. Warum passiert das?

Referenzzuweisung

In Python sind Listen veränderbare Objekte. Durch die Zuweisung von vec = v wird keine neue Kopie der Liste erstellt. Stattdessen weist es einen Verweis 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():

vec = list(v)

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 .

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3