Heim > Backend-Entwicklung > Python-Tutorial > Warum wirkt sich das Ändern einer Listenvariablen in Python auch auf eine andere ihr zugewiesene Variable aus?

Warum wirkt sich das Ändern einer Listenvariablen in Python auch auf eine andere ihr zugewiesene Variable aus?

Patricia Arquette
Freigeben: 2024-11-02 18:55:30
Original
809 Leute haben es durchsucht

Why Does Modifying a List Variable in Python Also Affect Another Variable Assigned to It?

Unerwartete Listenmutationen: Die Auswirkungen von Referenzen verstehen

In Python stellen Listenvariablen Referenzen auf im Speicher gespeicherte Arrays dar. Wenn Sie eine Listenvariable einer anderen zuweisen (z. B. vec = v), wird tatsächlich die Adresse des Arrays übergeben, anstatt das Array selbst zu kopieren.

Das bedeutet, dass alle an einer Liste vorgenommenen Änderungen dies tun wirken sich auch auf die andere Liste aus, die auf dieselbe Speicheradresse verweist. Betrachten Sie beispielsweise den folgenden Code:

<code class="python">v = [0,0,0,0,0,0,0,0,0]
vec = v
vec[5] = 5</code>
Nach dem Login kopieren

Nach der Ausführung des obigen Codes enthalten sowohl v als auch vec die folgenden Werte:

[0, 0, 0, 0, 0, 5, 0, 0, 0]
Nach dem Login kopieren

Dies geschieht, weil vec und v beide referenzieren das gleiche Array im Speicher. Wenn der Wert am Index 5 in vec auf 5 geändert wird, wird die Änderung nicht nur in vec, sondern auch in v widergespiegelt, da beide Variablen auf dasselbe zugrunde liegende Array verweisen.

Um echte Kopien einer Liste zu erstellen , verwenden Sie die Methode copy() oder den Konstruktor list() mit der Originalliste als Argument, wie unten gezeigt:

<code class="python">vec = v.copy()
vec = list(v)</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern einer Listenvariablen in Python auch auf eine andere ihr zugewiesene Variable aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage