Als ich versuchte, einen Teil eines zweidimensionalen Python-Arrays zu ersetzen, machte ich einen Fehler bei der Erstellungsmethode und blieb stecken. Als kleines Memorandum. ..
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]]
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
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]
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