Die Geschichte, dass das Ersetzen der zweidimensionalen Liste in Python nicht funktioniert hat

Einführung

Als ich versuchte, einen Teil eines zweidimensionalen Python-Arrays zu ersetzen, machte ich einen Fehler bei der Erstellungsmethode und blieb stecken. Als kleines Memorandum. ..

Beschreibung des Problems

Es ist sehr einfach, aber wenn Sie ein 2D-Array mit 5 * 4 Nullen hatten, wollten Sie einige davon durch 1 ersetzen.

#before:Ein zweidimensionales Array wie dieses
[[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0]]
'''''''''''''
      |
      |
      |
     \|/
'''''''''''''
#after:Ich wollte es so ersetzen
[[0,0,0,0,0],
[0,0,1,0,0],
[0,0,0,0,0],
[0,0,0,0,0]]

was ist passiert?

Zuallererst aus dem Fehler, den ich gemacht habe,

#Falsches Beispiel
#Erstellen Sie ein initialisiertes Array
map_list = [[0]*W]*H

#map_Ersetzen Sie durch Angabe des Listenindex
map_list[1][2] = 1

#Versuchen Sie, das Ergebnis anzuzeigen
for line in map_list:
    print(line)

Ergebnis:

[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]

Warum! ?? Sie haben die Position richtig angegeben! ?? ** Irgendwie für alle Spalten ausgeführt **

In Python können Sie die ID mit der folgenden Methode überprüfen

print(id(a))

Wenn Sie das zweidimensionale Array früher überprüfen,

[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]

Anscheinend ist die Ursache, dass die ID der Spalte abgedeckt ist

Lösung

Das Problem bestand nun darin, das Array zu erstellen.

map_list = [[0]*5]*4

Erstellen Sie mit der Listeneinschlussnotation wie folgt

map_list = [[0 for i in range(5)] for r in range(4)]

Lassen Sie uns tatsächlich ersetzen

#Erstellen Sie ein initialisiertes Array
map_list = [[0 for i in range(5)] for r in range(4)]

#map_Ersetzen Sie durch Angabe des Listenindex
map_list[1][2] = 1

#Versuchen Sie, das Ergebnis anzuzeigen
for line in map_list:
    print(line)

Ausgabe:

[0, 0, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

Zusammenfassung

Mir wurde also gesagt, dass Sie beim Initialisieren eines zweidimensionalen Arrays vorsichtig sein müssen. Es gibt eine Falle an einem unerwarteten Ort.

Recommended Posts

Die Geschichte, dass das Ersetzen der zweidimensionalen Liste in Python nicht funktioniert hat
Die Geschichte, dass yapf nicht mit vscode funktioniert hat
Die Geschichte, dass sendmail, die im Terminal ausgeführt werden kann, mit cron nicht funktioniert hat
[Python] Tensorflow 2.0 unterstützte Python 3.8 nicht, daher die Geschichte des Downgrades von Python
Die Geschichte des Debuggens in der lokalen Umgebung, weil die Kompilierung mit Read the Docs nicht funktioniert hat
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Die Geschichte der Release-Arbeit der Anwendung, die Google nicht erzählt
Die Geschichte des Ausschlusses / Einschlusses, die Serverless Framework-Anfänger in Pythonista für Anfänger missverstanden (nicht verstanden) haben
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Ruft die EDINET-Codeliste in Python ab
Ergebnisse, die bei der Suche mit diesem Wort nicht erfasst wurden
Über den Fall, dass der Lautsprecher in Ubuntu LTS 20.04 keinen Ton erzeugt hat
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Kopieren Sie die Liste in Python
Die Geschichte des Lesens von HSPICE-Daten in Python
Diejenige, die den Fortschrittsbalken in Python anzeigt
Die Geschichte, die zur Installation von Pip passt
Reduzieren Sie eine unregelmäßige zweidimensionale Standardliste in Python
Sortierte Liste in Python
Zu dem Problem, dass der Inhalt von Python print in Docker-Protokollen nicht sichtbar ist
Schlüsseleingabe, die nicht auf Schlüsseleingabe in Python wartet
Filterliste in Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Suchen Sie den Teil 575 aus Wikipedia in Python
Den Inhalt der Daten in Python nicht kennen
Die findähnliche Sache der Liste in Python
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Module, die die Shell in Python durchlaufen können
[Python] So geben Sie Listenwerte der Reihe nach aus
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Die Geschichte, dass pyenv den Python-Ausführungsbefehl PATH nicht bestanden hat
Makro (VBA), das die Bereichsauswahl in Excel in Python-Listeninitialisierungscode konvertiert
Stellen Sie sicher, dass alle Elemente in der Liste in Python identisch sind
Test.py wird auf dem Webserver in Python3 nicht angezeigt.
[Kleine Geschichte] [Python] Ersetzen Sie Zeichenfolgen in einem zweidimensionalen Array durch Zahlen
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Die Geschichte, dass Python nicht mehr mit VS Code (Windows 10) arbeitet
Eine Geschichte, die ich nicht wusste, wie man Mixin lädt, wenn ich mit der Django-App eine Front mache [Anfänger lernt Python mit einem Nachschlagewerk]
Löse ABC175 D in Python
In der Liste verfügbare Methoden
Abrufen von Listenelementen in Python
Wenn Sie der Meinung sind, dass die Person, die Sie mit pip eingegeben haben, nicht funktioniert → Verwenden Sie python3 zufällig?
Die Geschichte des Erstellens eines Bots, der aktive Mitglieder in einem bestimmten Slack-Kanal mit Python anzeigt
Spielen Sie Sounds in Python ab, vorausgesetzt, die Tastatur ist eine Klaviertastatur
Python Hinweis: Stellen Sie fest, ob das Befehlszeilenargument in der Liste enthalten ist
Ich habe die Bewegung Python3 ausprobiert, die die Richtung im Koordinatensystem ändert
Neue Python-Grammatik und Funktionen, die im Einführungsbuch nicht erwähnt werden
So stellen Sie fest, dass in Python3 ein Kreuzschlüssel eingegeben wurde
33 Zeichenfolgen, die in Python nicht als Variablennamen verwendet werden sollten
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst