Tableaux de tableaux en Python☘
Les tableaux, type abstrait de données (TAD), seront implémentés en python
par des objet de type list.
Dans la suite du cours, on parlera indifféremment de tableau (TAD) ou de
liste Python (type list).
Définition par extension☘
Le tableau :
A = |
1 | 2 | 3 |
| 4 | 5 | 6 | |
| 7 | 8 | 9 |
est représenté en Python par :
>>> A = [ [1,2,3],
[4,5,6],
[7,8,9] ]
Remarque
Observez que vous pouvez passer à la ligne après la virgule de séparation des éléments (ici les sous-tableaux) pour plus de visibilité.
Éléments et sous-éléments d'une matrice☘
Un tableau de tableaux est muable. Si on désigne par mat un tel tableau,
alors :
- on peut toujours accéder et modifier un des sous-tableaux d'indice
iavec l'instructionmat[i]; - on peut aussi accéder et modifier l'élément d'indice
jdu sous-tableau d'indiceiavec l'instructionmat[i][j].
Exemple
Recopiez et testez dans la console les instructions ci-dessous. Vérifiez que la console renvoie bien les valeurs affichées :
>>> A = [ [1,2,3],
[4,5,6],
[7,8,9] ]
>>> A
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> A[0]
[1, 2, 3]
>>> A[1]
[4, 5, 6]
>>> A[2]
[7, 8, 9]
>>> A[1] = [666, 69, 96]
>>> A
[[1, 2, 3], [666, 69, 96], [7, 8, 9]]
>>> A[0][1]
2
>>> A[0][1] = 42
>>> A
[[1, 42, 3], [666, 69, 96], [7, 8, 9]]
Définition élément par élément☘
Compléter à la main une matrice rempli de zéros est fastidieux.
Une méthode possible (il y en a d'autres) consiste à le remplir à l'aide
d'une double boucle for :
- la première boucle
forcrée les lignes ; - la seconde boucle
forinsère les zéros dans une ligne.
Exemple
Complétez les pointillés de la définition de la fonction rempli_uns()
qui renvoie une matrice dont tous les éléments sont des 1.
Cette matrice comporte nb_lignes lignes et nb_colonnes colonnes,
où nb_lignes et nb_colonnes sont des entiers strictement positifs
passés en paramètres de la fonction.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Voici un exemple de test :
>>> mat = rempli_uns(5, 3)
>>> for ligne in mat:
... print(ligne)
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Définition par compréhension☘
Une matrice peut aussi être définie par compréhension.
Testez les instructions suivantes dans la console et essayez de les comprendre (car il faudra savoir les formuler ainsi) :
>>> Un = [ [1 for num_colonne in range(3)] for num_ligne in range(5) ]
>>> Un
[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
>>> Descend = [ [j-i for i in range(3)] for j in range(3, 0, -1) ]
>>> Descend
[[3, 2, 1], [2, 1, 0], [1, 0, -1]]
>>> A = [ [i+3*j for i in range(1, 4)] for j in range(3) ]
>>> A
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Remarque
On peut constater que la définition de la matrice Un :
Un = [ [1 for num_colonne in range(3)] for num_ligne in range(5) ]
rempli_uns() définie dans le paragraphe précédent :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |