L'histoire selon laquelle le remplacement de la liste bidimensionnelle n'a pas fonctionné en python

introduction

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. ..

description du problème

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]]

Que s'est il passé?

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

Solution

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]

Résumé

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.

Recommended Posts

L'histoire selon laquelle le remplacement de la liste bidimensionnelle n'a pas fonctionné en python
L'histoire selon laquelle yapf n'a pas fonctionné avec vscode
L'histoire selon laquelle sendmail qui peut être exécuté dans le terminal ne fonctionnait pas avec cron
[Python] Tensorflow 2.0 ne supportait pas Python 3.8, donc l'histoire de la rétrogradation de Python
L'histoire du débogage dans l'environnement local car la compilation n'a pas fonctionné avec Read the Docs
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
L'histoire du travail de sortie de l'application que Google ne raconte pas
L'histoire d'exclure / d'inclure que les débutants de Serverless Framework ont mal compris (n'ont pas compris) dans Pythonista débutant
Prenez la somme logique de List en Python (fonction zip)
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Obtenir la liste de codes EDINET en Python
Résultats qui n'ont pas été pris en compte dans la recherche avec ce mot
À propos du cas où le haut-parleur ne produisait pas de son dans Ubuntu LTS 20.04
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Copiez la liste en Python
L'histoire de la lecture des données HSPICE en Python
Celui qui affiche la barre de progression en Python
L'histoire qui s'inscrit dans l'installation de pip
Aplatir une liste standard bidimensionnelle irrégulière en Python
Liste triée en Python
À propos du fait que le contenu de l'impression Python n'est pas visible dans les journaux du docker
Entrée clé qui n'attend pas l'entrée clé en Python
Liste de filtres en Python
[python] Récupère la liste des classes définies dans le module
L'histoire de FileNotFound en Python open () mode = 'w'
Trouvez la partie 575 de Wikipedia en Python
Ne pas être conscient du contenu des données en python
La chose semblable à une recherche de liste en Python
[Python] Affiche toutes les combinaisons d'éléments de la liste
Modules pouvant passer par le shell en Python
[Python] Comment afficher les valeurs de liste dans l'ordre
Comment trouver le premier élément qui correspond aux critères de la liste Python
Lors de l'écriture dans un fichier csv avec python, une histoire que j'ai fait une légère erreur et n'a pas respecté la date de livraison
L'histoire selon laquelle pyenv n'a pas passé la commande d'exécution python PATH
Macro (VBA) qui convertit la sélection de plage dans Excel en code d'initialisation de liste Python
Assurez-vous que tous les éléments de la liste sont les mêmes en Python
Test.py n'est pas reflété sur le serveur Web dans Python3.
[Petite histoire] [Python] Remplacez les chaînes de caractères dans un tableau à deux dimensions par des nombres
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Histoire que Python a cessé de travailler avec VS Code (Windows 10)
Une histoire que je ne savais pas charger de mixin lors de la création d'une façade avec l'application django [Débutant apprend python avec un livre de référence]
La liste Python n'est pas une liste
Résoudre ABC175 D en Python
Méthodes disponibles dans la liste
Obtenir des éléments de liste en Python
Si vous pensez que la personne que vous mettez avec pip ne fonctionne pas → Utilisez-vous python3 par hasard?
L'histoire de la création d'un Bot qui affiche les membres actifs dans un canal spécifique de Slack avec Python
Jouez des sons en Python en supposant que le clavier est un clavier de piano
python Remarque: déterminez si l'argument de ligne de commande est dans la liste
J'ai essayé le mouvement Python3 qui change la direction dans le système de coordonnées
Nouvelle grammaire et fonctionnalités Python non mentionnées dans le livre d'introduction
Comment déterminer qu'une clé croisée a été entrée dans Python3
33 chaînes à ne pas utiliser comme noms de variables en python
Une fonction qui mesure le temps de traitement d'une méthode en python