mardi 6 janvier 2009

Listes multi-dimensionnelles en Python

En Python, les listes sont l'un des types de données les plus pratiques. Ce sont les équivalents les plus proches des structures de type tableau que l'on rencontre dans d'autres langages.
Donc, à ce titre, on peut également définir des listes multi-dimensionnelles, à 2 dimensions pour commencer.
Script
nb_lignes,nb_cols = 5,4
liste = []
for indl in range(nb_lignes):
.....dummy = [0] * nb_cols
.....liste.append(dummy)
print liste
liste[1][3] = "X"
print liste


Dans l'exemple précédent, on définit une liste liste de 5 lignes par 4 colonnes. L'affichage de la liste avant et après l'insertion du caractère "x" en (1,3) permet d'observer la mise à jour de la liste.

Question
La solution suivante est plus esthétique, mais comporte un piège classique sur la manipulation des objets.
>>> liste = [[0]*nb_lignes] * nb_cols
Quel est le résultat affiché si l'on procède au même remplacement de la position (1,3) ?