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 .
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