Cours
Types construits : p-uplets, tableaux, dictionnaires
Un entier, un flottant, un booléen, une chaîne : avec les types de base, une variable contient une seule valeur.
Or un programme manipule sans cesse des groupes de valeurs : les coordonnées d'un point, les notes d'une classe, la fiche d'un élève.
Les types construits assemblent plusieurs valeurs en une seule. Python en propose trois, qui répondent à trois besoins différents.
| Type construit | En Python | Exemple | On y accède par |
|---|---|---|---|
| p-uplet | tuple | (3, 5) | la position |
| tableau | list | [12, 7, 15] | l'index |
| dictionnaire | dict | {"nom": "Diallo", "age": 16} | la clé |
1. Les p-uplets
1.1 Regrouper des valeurs
>>> point = (3, 5)
>>> date = (14, 7, 1789)
>>> point[0]
3
>>> date[2]
1789
>>> len(date)
3Un couple est un p-uplet de valeurs, un triplet en contient .
>>> point = (3, 5)
>>> point[0] = 4
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> point = (4, 5)1.2 Une fonction qui renvoie plusieurs valeurs
C'est l'usage principal des p-uplets.
L'instruction return a, b renvoie le couple (a, b), que l'on peut déballer dans deux variables d'un seul coup.
Essaie avec d'autres notes, puis affiche directement min_max([4, 4, 4]) : tu verras les parenthèses du couple.
De la même façon, la fonction divmod(17, 5) renvoie (3, 2) : le quotient et le reste de la division de par .
1.3 Quand les positions ne suffisent plus
Dans date = (14, 7, 1789), il faut se souvenir que la position est l'année.
Avec dix champs, le code devient illisible.
On préfère alors donner un nom à chaque valeur : c'est le rôle du dictionnaire, présenté dans la partie 3.
2. Les tableaux
2.1 Tableau indexé
>>> notes = [12, 7, 15, 9, 18]
>>> notes[0]
12
>>> notes[4]
18
>>> len(notes)
5Contrairement au p-uplet, un tableau est modifiable : on change une case avec t[i] = valeur.
Remplace i par , puis par : que se passe-t-il ? Essaie aussi i = -1.
2.2 Parcourir un tableau
Il y a deux façons de parcourir un tableau, et il faut savoir choisir.
# Quand on n'a pas besoin de la position
notes = [12, 7, 15, 9, 18]
total = 0
for note in notes:
total = total + note# Quand on modifie le tableau, ou qu'on a besoin de la position
notes = [12, 7, 15, 9, 18]
for i in range(len(notes)):
if notes[i] < 10:
notes[i] = notes[i] + 1Voici un comptage, écrit avec un parcours par les éléments.
Les algorithmes à savoir écrire avec un parcours : somme, moyenne, maximum, recherche d'un élément, comptage des éléments qui vérifient une condition.
2.3 Construire un tableau
Il existe quatre façons de construire un tableau.
- Par énumération :
t = [1, 2, 3], ett = []pour un tableau vide. - Par répétition :
[0] * 5donne[0, 0, 0, 0, 0]. - Par ajouts successifs :
t.append(x)ajoutexà la fin. - Par compréhension, en une seule ligne.
Modifie la condition pour ne garder que les notes supérieures ou égales à .
2.4 Tableaux de tableaux : les matrices
Un tableau dont les éléments sont eux-mêmes des tableaux représente une grille : une matrice, une image, un plateau de jeu.
m[i] est la ligne , et m[i][j] est l'élément de la ligne et de la colonne .
>>> m = [[3, 8, 1, 6],
... [5, 2, 9, 4],
... [7, 0, 3, 8]]
>>> m[1]
[5, 2, 9, 4]
>>> m[1][2]
9
>>> len(m)
3
>>> len(m[0])
4Retiens l'ordre : la ligne d'abord, la colonne ensuite.
Cherche la valeur , puis le dernier . Que se passe-t-il si tu inverses les rôles, avec i = 2 et j = 3, puis i = 3 et j = 2 ?
Pour parcourir toute la grille, il faut deux boucles imbriquées : une pour les lignes, une pour les colonnes.
Vérifie-le toi-même : une seule case est modifiée, mais regarde l'affichage.
3. Les dictionnaires
3.1 Clés et valeurs
Un dictionnaire représente naturellement un enregistrement dont les champs portent un nom : c'est le p-uplet nommé annoncé dans la partie 1.
>>> eleve = {"nom": "Diallo", "prenom": "Aïcha", "age": 16}
>>> eleve["age"]
16
>>> eleve["age"] = 17
>>> eleve["ville"] = "Lyon"
>>> eleve
{'nom': 'Diallo', 'prenom': 'Aïcha', 'age': 17, 'ville': 'Lyon'}
>>> "nom" in eleve
True
>>> len(eleve)
4La même écriture d[cle] = valeur modifie l'entrée si la clé existe, et la crée sinon.
Un dictionnaire vide s'écrit d = {}.
Ajoute la ligne print(eleve["taille"]) et relance : tu obtiens la KeyError annoncée.
3.2 Parcourir un dictionnaire
Il y a trois parcours possibles, selon ce dont on a besoin.
for cle in eleve.keys():
print(cle)
# On peut écrire plus simplement : for cle in elevefor valeur in eleve.values():
print(valeur)for cle, valeur in eleve.items():
print(cle, ":", valeur)Les entrées sont parcourues dans l'ordre où elles ont été ajoutées.
3.3 Un classique : compter les occurrences
On veut savoir combien de fois chaque lettre apparaît dans un mot.
Le dictionnaire est l'outil idéal : la lettre est la clé, le nombre d'apparitions est la valeur.
3.4 Combiner les types
Les types construits se combinent librement.
Un tableau de dictionnaires représente une liste d'enregistrements : c'est une table de données, l'objet du chapitre suivant.
Lis classe[1]["note"] de gauche à droite : l'élève d'index , puis sa note.
4. Exemple résolu pas à pas
Cherche d'abord sur papier, puis déplie chaque correction et exécute-la.
Correction · Question a
On garde les valeurs qui vérifient la condition x > 20.
chaudes = [x for x in temp if x > 20] donne [21, 25, 23, 27, 22].
Correction · Question b
On a besoin de la position du minimum, donc d'un parcours par les index.
On retient l'index du plus petit élément rencontré jusqu'ici, et on renvoie un p-uplet.
def minimum(t):
i_min = 0
for i in range(len(t)):
if t[i] < t[i_min]:
i_min = i
return t[i_min], i_minminimum(temp) renvoie (18, 0).
Correction · Question c
On remplit le dictionnaire entrée par entrée, puis on le parcourt par ses couples.
jours = ["lun", "mar", "mer", "jeu", "ven", "sam", "dim"]
meteo = {}
for i in range(7):
meteo[jours[i]] = temp[i]
for jour, t in meteo.items():
if t > 22:
print(jour)Le programme affiche mer, ven et sam.
Le programme complet, pour vérifier et expérimenter :
À retenir
Révise ce chapitre avec KlarIA
Tuteur qui t'explique pas à pas, quiz pour t'entraîner, flashcards pour mémoriser. Gratuit.
Créer mon compte gratuitement→