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
i
avec l'instructionmat[i]
; - on peut aussi accéder et modifier l'élément d'indice
j
du sous-tableau d'indicei
avec 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
for
crée les lignes ; - la seconde boucle
for
insè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 |
|