- Manipuler listes et dictionnaires
- Choisir la structure adaptée au problème
- Comprendre piles et files
Pourquoi les structures de données comptent
Un programme manipule rarement une seule valeur : il gère des listes de produits, des utilisateurs, des messages. Une structure de données est une manière d’organiser ces valeurs pour les retrouver, les ajouter et les modifier efficacement. Bien choisir sa structure change parfois un programme de « 10 minutes » à « 10 millisecondes ».
Les listes : une suite ordonnée
notes = [12, 8, 15]
notes.append(17) # ajoute à la fin
print(notes[0]) # 12 : on compte à partir de 0
print(notes[-1]) # 17 : le dernier élément
print(notes[1:3]) # [8, 15] : tranche, fin exclue
notes.sort()
print(notes, len(notes), sum(notes))
Une liste est ordonnée, modifiable et accessible par position. Parfait quand l’ordre compte.
Les dictionnaires : retrouver par clé
Un dictionnaire associe une clé à une valeur — comme un annuaire, où tu cherches un nom pour obtenir un numéro, sans parcourir toute la liste.
eleve = {"prenom": "Amina", "age": 15, "classe": "3B"}
print(eleve["prenom"])
eleve["age"] = 16 # modifier
eleve["ville"] = "Tournai" # ajouter
print(eleve.get("email", "inconnu")) # valeur par défaut si absent
for cle, valeur in eleve.items():
print(cle, "->", valeur)
Exemple utile : compter les occurrences des mots d’un texte.
texte = "le chat et le chien et le chat"
compte = {}
for mot in texte.split():
compte[mot] = compte.get(mot, 0) + 1
print(compte) # {'le': 3, 'chat': 2, 'et': 2, 'chien': 1}
Ensembles, piles et files
- Ensemble (
set) : collection sans doublons, avec test d’appartenance rapide.set([1,2,2,3])donne{1, 2, 3}. - Pile (stack) : dernier entré, premier sorti (LIFO). Comme une pile d’assiettes. C’est ce qui permet le bouton « Annuler » d’un éditeur.
- File (queue) : premier entré, premier sorti (FIFO). Comme la file d’attente d’un guichet : impression de documents, tâches à traiter.
pile = []
pile.append("A"); pile.append("B"); pile.append("C")
print(pile.pop()) # 'C' : le dernier arrivé sort en premier
from collections import deque
file = deque(["A", "B", "C"])
print(file.popleft()) # 'A' : le premier arrivé sort en premier
Quelle structure choisir ?
- L’ordre importe, accès par position → liste.
- Retrouver une valeur à partir d’un nom ou d’un identifiant → dictionnaire.
- Éviter les doublons, tester « est-ce présent ? » → ensemble.
- Annuler / revenir en arrière → pile. Traiter dans l’ordre d’arrivée → file.
Erreurs courantes
- Accéder à un index qui n’existe pas :
IndexError(une liste de 3 éléments va de 0 à 2). - Lire une clé absente avec
d["x"]:KeyError; préfèred.get("x")si elle peut manquer. - Copier une liste avec
b = a: les deux noms désignent la même liste. Utiliseb = a.copy(). - Chercher dans une longue liste avec
indans une boucle : préfère un ensemble ou un dictionnaire.