Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ändert das Ändern von „vec“ auch „v“ in Python?

Warum ändert das Ändern von „vec“ auch „v“ in Python?

DDD
DDDOriginal
2024-11-03 04:08:31169Durchsuche

Why Does Modifying 'vec' Also Change '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!

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