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

Exemple
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

Exemple
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.