Heim >Backend-Entwicklung >Python-Tutorial >Warum wirkt sich das Ändern eines verschachtelten Listenelements auf alle Unterlisten in Python aus?
Indizes für verschachtelte Listen
Bei der Arbeit mit verschachtelten Listen in Python ist es wichtig, das Konzept der Listenreferenzen und deren Auswirkungen auf Listenindizes zu verstehen .
Referenzen auflisten
Im Gegensatz zu vielen Programmiersprachen, die Variablen als Wert übergeben, übergibt Python Listen als Referenz. Dies bedeutet, dass durch das Zuweisen einer Liste zu einer anderen Variablen ein Verweis auf dasselbe zugrunde liegende Listenobjekt im Speicher erstellt wird.
Verschachtelte Listenindizes
Im bereitgestellten Code tritt das Problem auf aus der Verwendung der Listenmultiplikation. Die Zeile some_list = 4 * [(4 * [0])] erstellt vier Verweise auf dasselbe Listenobjekt, was bedeutet, dass sich Änderungen an einer der Unterlisten auf alle vier auswirken.
Erwartete Ergebnisse
Die erwarteten Ergebnisse sind:
[0, 0, 0, 0] [0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1]
Tatsächliche Ergebnisse
Die tatsächlichen Ergebnisse sind:
[0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1] [0, 1, 1, 1]
Lösung
Um dieses Problem zu vermeiden, verwenden Sie eine Schleife, um eine verschachtelte Liste zu erstellen, ohne mehrere Verweise auf dieselbe Liste zu erstellen. Der korrigierte Code lautet:
some_list = [(4 * [0]) for _ in range(4)]
Diese Schleife erstellt vier unabhängige Listen mit jeweils vier Nullen und stellt so sicher, dass das erwartete Verhalten erreicht wird.
Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Ändern eines verschachtelten Listenelements auf alle Unterlisten in Python aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!