Les Tableaux
Ce cours a en très grande partie été écrit par Nicolas Revéret
I. Présentation⚓︎
Considérons le tableau ci-dessous présentant les fruits préférés d'un consommateur
| Poire | Pomme | Orange | Kiwi | ... |
Ce tableau a plusieurs caractéristiques :
- le fruit préféré du consommateur est dans la première colonne et c'est la « Poire » ;
- les types de valeurs sont uniformes : le tableau présente les fruits préférés du consommateur. Il est impossible d'y trouver la valeur « 3,59 » ;
- ce tableau comporte quatre colonnes, on ne peut pas en rajouter ni en supprimer.
En informatique, un tableau reprend ces caractéristiques :
- un tableau est une structure de données linéaire. Cela signifie qu'il contient différents éléments, rangés dans un certain ordre.
- un tableau est de longueur fixe. Une fois créé, il est impossible d'ajouter ou de supprimer des valeurs.
- les éléments d'un tableau sont tous du même type. Un tableau ne peut donc pas contenir un nombre entier suivi d'une chaîne de caractères.
Le type list de Python permet de représenter de tels tableaux. Dans toute la suite de ce cours, tous les tableaux seront représentés en Python par des list.
Remarque
En réalité les list Python ne sont pas des tableaux au sens plein du terme : ils peuvent contenir des éléments de types variés et leur taille peut évoluer.
Dans tout ce cours, on utilisera tout de même le type list afin de représenter les tableaux mais l'on fera en sorte de :
- ne jamais modifier la longueur d'une
list, - de n'y stocker que des éléments du même type.
Pour déclarer une list on peut délimiter ses éléments avec des crochets :
Cette façon de faire est fastidieuse si le tableau comporte beaucoup de valeurs. Il existe d'autres façons de procéder. Retenons la suivante qui permet de créer un tableau contenant 1 000 fois la valeur None (qui peut s'apparenter à une valeur vide, on ne fait que créer des cellules afin de les compléter ultérieurement) :
Dans un tableau, chaque élément se trouve à une position précise : il y a le premier élément, le deuxième, le troisième etc. La position d'un élément dans le tableau est donnée par son indice.
Attention
Comme dans beaucoup de langages de programmation, en Python, les indices débutent à 0 !
Ainsi, le premier élément est à l'indice 0.
| Indice | 0 |
1 |
2 |
3 |
4 |
|---|---|---|---|---|---|
| Valeur | "Poire" |
"Pomme" |
"Orange" |
"Kiwi" |
None |
Connaissant l'indice d'un élément dans un tableau, il est possible de récupérer sa valeur en utilisant la notation tableau[indice]. Par exemple :
>>> fruits = ['Poire', 'Pomme', 'Orange', 'Kiwi']
>>> fruits[0]
'Poire'
>>> fruits[3]
'Kiwi'
Tableau et mémoire
Dans les langages de programmation tels que C, un tableau est stocké en machine sous forme de cellules contigües.
Connaissant l'adresse \(A_0\) de la première cellule dans la mémoire, la taille \(t\) d'une cellule (fixe car les éléments sont tous de même type) et l'indice \(i\) d'un élément, il est aisé de calculer son adresse mémoire avec \(A_i=A_0+t\times i\).
Le fonctionnement est différent en Python car les éléments d'une list peuvent être de types différents, ou de taille variable. Ainsi Python ne stocke pas les valeurs dans les cellules mais leurs adresses (qui, elles, sont de taille constante).
Cette instruction permet aussi de modifier une valeur :
>>> fruits = ['Poire', 'Pomme', 'Orange', 'Kiwi']
>>> fruits[1] = 'Banane'
>>> fruits
['Poire', 'Banane', 'Orange', 'Kiwi']
Il est possible de connaître le nombre d'éléments contenus dans un tableau en utilisant la fonction len. Cette grandeur est la longueur du tableau (length en anglais).
II. Premiers exercices⚓︎
Question
On considère le tableau meubles = ['Table', 'Commode', 'Armoire', 'Placard', 'Buffet'].
-
meubles[1]vaut'Table' -
meubles[1]vaut'Commode' -
meubles[4]vaut'Buffet' -
meubles[5]vaut'Buffet'
Les indices débutent à
0. Donc'Table'est à l'indice0meubles[1]vaut bien'Commode'meubles[4]vaut bien'Buffet'Le tableau contient 5 éléments. Le dernier éléments est donc à l'indice
4
Question
On considère désormais le tableau pointures = [38, 43, 44, 43, 37, 42, 39, 43, 40].
- Ce tableau est mal défini car il contient des valeurs en double
-
pointures[38]vaut0 -
pointures[3]est égal àpointures[8] -
pointures[len(pointures) - 1]vaut40
Un tableau peut tout à fait contenir des valeurs en double
Attention à ne pas confondre indice et valeur. Ici c'est
pointures[0]qui vaut38pointures[3]est en réalité égal àpointures[7]Comme on a
len(pointures)qui vaut9, le dernier élément est bien à l'indice9 - 1c'est à dire8
Question
Compléter le script ci-dessous :
Solution
# Saisir l'indice permettant d'afficher 'Armoire'
print(meubles[2])
# Saisir l'instruction permettant d'afficher 'Buffet'
print(meubles[4])
# Ou :
print(meubles[len(meubles) - 1])
# Saisir l'instruction permettant d'afficher la longueur du tableau
print(len(meubles))
# Compléter la boucle afin d'afficher tous les meubles du tableau
for indice in range(len(meubles)):
print(meubles[indice], end=", ")
III. Les indices négatifs⚓︎
👉 Il est parfois pratique d'utiliser des indices négatifs :
Les indices négatifs
L'indice -1 correspond au dernier élément de la liste, l'indice -2 l'avant dernier, l'indice -3 l'avant avant dernier, etc...
| Indice | -5 |
-4 |
-3 |
-2 |
-1 |
|---|---|---|---|---|---|
| Valeur | "Poire" |
"Pomme" |
"Orange" |
"Kiwi" |
None |
Testez
Recopiez dans l'éditeur ci-dessous les instructions suivantes, puis tester
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
IV. QCM⚓︎
Les tableaux - QCM 2
-
Cocher toutes les bonnes réponses
commodecorrespond à-
meubles[1] -
meubles[2] -
meubles[-4] -
meubles[- 3]
-
-
Cocher toutes les bonnes réponses
Buffetcorrespond à-
meubles[4] -
meubles[5] -
meubles[0] -
meubles[- 1]
-
-
Cocher toutes les bonnes réponses
Tablecorrespond à-
meubles[0] -
meubles[1] -
meubles[- 1] -
meubles[- 5]
-
-
Cocher toutes les bonnes réponses
Armoirecorrespond à-
meubles[2] -
meubles[3] -
meubles[- 3] -
meubles[- 2]
-
-
Cocher toutes les bonnes réponses
len(meubles)vaut-
4 -
5 -
- 5 -
6
-
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)