Quand j'ai essayé de remplacer une partie d'un tableau bidimensionnel de python, j'ai fait une erreur dans la méthode de création et je suis resté bloqué. Comme petit mémorandum. ..
C'est très simple, mais si vous aviez un tableau 2D composé de 5 * 4 0, vous vouliez en remplacer certains par 1.
#before:Un tableau à deux dimensions comme celui-ci
[[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0]]
'''''''''''''
|
|
|
\|/
'''''''''''''
#after:Je voulais le remplacer comme ça
[[0,0,0,0,0],
[0,0,1,0,0],
[0,0,0,0,0],
[0,0,0,0,0]]
Tout d'abord, de l'erreur que j'ai commise,
#Mauvais exemple
#Créer un tableau initialisé
map_list = [[0]*W]*H
#map_Remplacer en spécifiant l'index de la liste
map_list[1][2] = 1
#Essayez d'afficher le résultat
for line in map_list:
print(line)
résultat:
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 1, 0, 0]
Pourquoi! ?? Vous avez correctement spécifié la position! ?? ** En quelque sorte exécuté pour toutes les colonnes **
En python, vous pouvez vérifier l'id par la méthode suivante
print(id(a))
Si vous vérifiez le tableau à deux dimensions plus tôt,
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
[1650962624, 1650962624, 1650962656, 1650962624, 1650962624]
Apparemment, la cause est que l'identifiant de la colonne est couvert
Maintenant, le problème était la partie de la création du tableau.
map_list = [[0]*5]*4
Créez en utilisant la notation d'inclusion de liste comme suit
map_list = [[0 for i in range(5)] for r in range(4)]
Remplaçons réellement
#Créer un tableau initialisé
map_list = [[0 for i in range(5)] for r in range(4)]
#map_Remplacer en spécifiant l'index de la liste
map_list[1][2] = 1
#Essayez d'afficher le résultat
for line in map_list:
print(line)
production:
[0, 0, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
Donc, on m'a dit qu'il fallait faire attention lors de l'initialisation d'un tableau à deux dimensions. Il y a un écueil dans un endroit inattendu.