Warum teilen verschachtelte Listen in Python dieselben zugrunde liegenden Daten?

DDD
Freigeben: 2024-10-31 07:46:02
Original
233 Leute haben es durchsucht

Why Do Nested Lists in Python Share the Same Underlying Data?

Verschachtelte Listenindizes

In Python können verschachtelte Listen mithilfe einer Liste von Listen erstellt werden. Beim Ändern von Werten innerhalb dieser Listen tritt jedoch aufgrund der Referenzverarbeitung in Python eine häufige Gefahr auf.

Beachten Sie den folgenden Code:

<code class="python">some_list = 4 * [(4 * [0])]
for i in range(3):
    for j in range(3):
        some_list[i + 1][j + 1] = 1
for i in range(4):
    print(some_list[i])</code>
Nach dem Login kopieren

Die beabsichtigte Ausgabe lautet:

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

Die eigentliche Ausgabe lautet jedoch:

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

Das Problem verstehen

Das Problem ergibt sich aus der Zeile some_list = 4 * [(4 * [0 ])]. Hier erstellt der Ausdruck [(4 * [0])] eine einzelne Liste mit vier Elementen, von denen jedes eine Liste mit vier Nullen ist. Die anschließende Multiplikation 4 * erstellt jedoch vier Verweise auf dieselbe Liste und nicht auf vier unterschiedliche Listen.

Wenn ein Wert innerhalb eines Elements von some_list geändert wird, wirkt sich dies daher auch auf die anderen Elemente aus, da sie Alle verweisen auf dieselbe zugrunde liegende Liste. Dieses Verhalten wird in Python als Referenzübergabe bezeichnet.

Lösung

Um dieses Problem zu beheben und unabhängige Listen innerhalb von some_list zu erstellen, kann eine Schleife verwendet werden, um jede Unterliste einzeln zu erstellen , wie folgt:

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

Dieser Code erstellt vier verschiedene Listen mit jeweils vier Nullen. Das Ändern eines Werts innerhalb einer Unterliste hat keine Auswirkungen mehr auf die anderen Unterlisten.

Das obige ist der detaillierte Inhalt vonWarum teilen verschachtelte Listen in Python dieselben zugrunde liegenden Daten?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!