Bases & algorithmique · 5 mondes · 15 étapes
Bases de la programmation
La grammaire du code, en Python, directement dans le navigateur.
Progression
0 %
0/15 étapes terminées
Avancé · 11 min de lecture
Choisir sa structure de données
Liste, dictionnaire, ensemble, tuple : et pourquoi ça change tout
1Définition
Une structure de données organise des valeurs en mémoire. Le bon choix rend le code plus court, plus lisible et souvent bien plus rapide : chercher dans une liste coûte du temps proportionnel à sa taille, chercher dans un dictionnaire est quasi instantané.
2Principes fondamentaux
01
Liste
Ordonnée, modifiable, doublons autorisés. Parfaite pour une suite d'éléments que l'on parcourt.
02
Dictionnaire
Accès par clé, quasi instantané quelle que soit la taille. Idéal pour associer une information à un identifiant.
03
Ensemble (set)
Pas de doublons, test d'appartenance très rapide, mais pas d'ordre garanti.
04
Tuple
Comme une liste, mais non modifiable. Utile pour des valeurs qui vont ensemble et ne changent pas.
3Exemples pratiques
Le même problème, deux coûts très différents
1noms = ["awa", "kofi", "lina"] # liste2index = {"awa": 1, "kofi": 2, "lina": 3} # dictionnaire3 4"lina" in noms # parcourt jusqu'à trouver5"lina" in index # accès direct par cléSur trois éléments, aucune différence. Sur cent mille, la liste rame et le dictionnaire non.
Compter avec un dictionnaire
1mots = ["if", "for", "if", "def", "if"]2compte = {}3 4for mot in mots:5 compte[mot] = compte.get(mot, 0) + 16 7print(compte) # {'if': 3, 'for': 1, 'def': 1}get(cle, 0) évite de tester l'existence de la clé : le motif de comptage le plus utilisé.
4Erreurs courantes
Chercher en boucle dans une liste
À éviter
for utilisateur in utilisateurs: if utilisateur["id"] == cible: …À faire
par_id = {u["id"]: u for u in utilisateurs}par_id[cible]Pourquoi : Construire un dictionnaire une fois évite de reparcourir la liste à chaque recherche.
Modifier une liste pendant qu'on la parcourt
À éviter
for x in liste: if x == 0: liste.remove(x)À faire
liste = [x for x in liste if x != 0]Pourquoi : Supprimer en cours de route décale les index et saute des éléments.
5Subtilités à connaître
- ◆Les compréhensions de liste (
[x * 2 for x in liste]) remplacent souvent trois lignes de boucle. - ◆Depuis Python 3.7, les dictionnaires conservent l'ordre d'insertion.
- ◆Les clés doivent être immuables : un tuple peut être une clé, une liste non.
6Techniques d'expert
Compréhensions
Transformer et filtrer en une ligne lisible.
pairs = [n for n in range(20) if n % 2 == 0]carres = {n: n * n for n in range(5)}Compteur intégré
collections.Counter compte les occurrences et donne les plus fréquentes en une ligne.
from collections import Counter Counter(["if", "for", "if"]).most_common(1) # [('if', 2)]Mesurer avant d'optimiser
time.perf_counter() autour d'un bloc suffit souvent à confirmer (ou infirmer) une intuition de performance.
7Sur le terrain
- Les applications web indexent leurs données par identifiant pour éviter de parcourir des listes à chaque requête.
- Les jeux utilisent des ensembles pour savoir instantanément si un objet est déjà ramassé.
- Les scripts de traitement de données comptent, regroupent et filtrent avec des dictionnaires.
8Vérifie ta compréhension
Question 1/3
Score 0
Quelle structure garantit l'absence de doublons ?
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.