Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wirkt sich die Änderung eines verschachtelten Listenelements in Python auf alle seine Kopien aus?

Warum wirkt sich die Änderung eines verschachtelten Listenelements in Python auf alle seine Kopien aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 01:44:29455Durchsuche

Why Does Modifying a Nested List Element in Python Affect All Its Copies?

Verschachtelte Listenindizes: Interpretation des referenzbasierten Verhaltens von Python

In Python werden Listen als veränderbare, referenzbasierte Datenstrukturen behandelt. Diese Eigenschaft stellt eine potenzielle Gefahr bei der Arbeit mit verschachtelten Listen dar, wie der folgende Codeausschnitt zeigt:

<code class="python">some_list = 4 * [(4 * [0])]</code>

Durch das Erstellen einer solchen verschachtelten Liste werden vier Verweise auf dieselbe zugrunde liegende Liste erstellt. Daher wirkt sich jede an einer der Referenzen vorgenommene Änderung aufgrund ihrer gemeinsamen Natur auf alle anderen aus. Dieses Verhalten wird im bereitgestellten Code deutlich, wo die erwartete Ausgabe:

<code class="python">[0, 0, 0, 0]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>

Konflikte mit der tatsächlichen Ausgabe:

<code class="python">[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]</code>

Um dieses Problem zu vermeiden, wird empfohlen, eine neue Liste zu erstellen Instanz für jede Unterliste unter Verwendung eines Verständnisansatzes:

<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>

Dieser Ansatz stellt sicher, dass jede Unterliste unabhängig ist, das Problem löst und die beabsichtigte Ausgabe erzeugt.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich die Änderung eines verschachtelten Listenelements in Python auf alle seine Kopien aus?. 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