Heim > Artikel > Backend-Entwicklung > Warum ändert das Ändern von „vec“ auch „v“ in Python?
Listen und Referenzen: Variablenzuweisung in Python verstehen
In Python können Variablen, die auf Listen verweisen, unerwartetes Verhalten zeigen. Betrachten Sie den folgenden Code:
<code class="python">v = [0] * 9 vec = v # Assign v's address to vec vec[5] = 5 # Modify vec at index 5 print(v) # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>
Überraschenderweise zeigt das Drucken von „v“, dass es ebenfalls geändert wurde. Dieses Verhalten kann zunächst verwirrend sein.
Warum ändert sich „v“?
Der Grund für die Änderung von „v“ ist, dass vec und v beide Referenzen sind. Wenn Sie vec = v zuweisen, erstellen Sie keine neue Liste. Stattdessen weisen Sie vec einfach die Adresse von v zu, die ein Speicherzeiger ist.
Infolgedessen verweisen sowohl vec als auch v auf dieselbe Liste im Speicher. Alle an einer der Variablen vorgenommenen Änderungen wirken sich auf die zugrunde liegende Liste aus, weshalb sich „v“ auch ändert, wenn „vec“ geändert wird.
Separate Listen erstellen
Zum Erstellen Wenn Sie zwei separate Listen erstellen möchten, müssen Sie eine flache Kopie durchführen:
<code class="python">vec = list(v)</code>
Dadurch wird eine neue Liste mit denselben Werten wie „v“ erstellt, diese wird jedoch an einem anderen Speicherort gespeichert. Jetzt hat die Änderung von „vec“ keinen Einfluss auf „v“.
Das obige ist der detaillierte Inhalt vonWarum ändert das Ändern von „vec“ auch „v“ in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!