Livre_silo 30 août 2013 16:32 Page 162
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
162
Informatique pour tous
Il s’agit bien là d’une matrice de dimensions (3, 3). Cependant, sa représentation en mémoire n’est pas la même que dans l’exemple précédent et montre au contraire un partage
du tableau v entre les trois lignes.
figures/partage1.pdf
En particulier, si on affecte un élément de la matrice, par exemple m[0][1] avec l’instruction
suivante :
m[0][1] = 17
c’est en fait toute la colonne, c’est-à-dire les trois éléments m[0][1], m[1][1], m[2][1], qui
sont modifiés :
figures/partage2.pdf
On peut l’observer facilement avec print(m), qui affiche :
[[0, 17, 2], [0, 17, 2], [0, 17, 2]]
Pour la même raison, on ne peut pas utiliser l’expression [[0] * 4] * 3 pour créer une matrice de dimensions (4, 3) initialisée avec des zéros, car elle correspond en fait à la situation
suivante :
figures/partage3.pdf
On va présenter maintenant un ensemble de fonctions élémentaires sur les matrices. Le
code complet est donné programme 3 page 166.
6.5.1 Création
Pour créer une matrice de grande taille, on ne souhaite évidemment pas donner tous ses
éléments explicitement. Par ailleurs, les dimensions peuvent être contenues dans des variables. Écrivons donc une fonction creer_matrice pour construire une matrice M de dimensions (n, p) où chaque élément M i,j est initialisé avec une valeur v. On procède en
créant un tableau de taille n initialisé avec None :
def creer_matrice(n, p, v):
m = [None] * n
Puis on affecte à chacune de ses cases un tableau de taille p différent :
for i in range(n):
m[i] = [v] * p
return m
Précédent

- 175/402

Suivant