Niveau 03 — Structures de données

Objectif du niveau

À la fin de ce niveau, tu sais stocker et manipuler des collections de données : listes (ajouter, retirer, trier, découper), tuples, dictionnaires et sets. Tu sais parcourir chacune de ces structures avec for, choisir la bonne structure pour un problème donné, et — surtout — tu comprends la mutabilité : pourquoi modifier une liste passée à deux variables change « les deux », et comment copier proprement. C'est le niveau qui transforme tes programmes de « quelques variables » en programmes qui traitent de vraies quantités de données.

Prérequis

Durée indicative et avertissement honnête

3 semaines à raison de 30–60 min par jour.

Avertissement franc : quatre leçons sur cinq sont de la mécanique qui s'apprend bien (méthodes de listes, syntaxe des dicts…). Mais la leçon 03-4 — mutabilité et références partagées — est LE point difficile de ce niveau, et l'un des trois concepts les plus mal compris de tout Python (avec le scope et self). b = a ne copie PAS une liste : les deux noms pointent vers le même objet, et modifier via b modifie « aussi » a. Tant que ce n'est pas compris, tu auras des bugs incompréhensibles pendant des mois. Prévois le double de temps sur cette leçon, fais TOUS ses exercices, et n'hésite pas à y revenir à J+7. Le dire maintenant t'évite de croire que « tu es nul » quand ça résiste : ça résiste pour tout le monde.

Leçons prévues

Chaque leçon suivra le template 17 sections (lessons/TEMPLATE_LECON.md).

TitreNotions couvertesStatut
03-1Listes — stocker en ordreCréation, indexation (positive et négative), len, modification par index, append, insert, remove, pop, sort/sorted, in, IndexError
03-2Slicing et parcours de listesSlices [start:stop:step], copie par slice [:], parcours avec for, enumerate, construire une liste en boucle, parcourir en modifiant (et pourquoi c'est piégé)
03-3Tuples et dictionnairesTuples (immuables, déballage), dicts : créer, lire (d[k] vs .get), ajouter/modifier/supprimer, keys/values/items, parcours, KeyError
03-4Mutabilité et références partagées ⚠️ le point difficileObjets vs noms, b = a ne copie pas, is vs ==, mutation via un alias, copie superficielle (.copy(), list(...), slice), limites de la copie superficielle (listes imbriquées), id() pour vérifier
03-5Sets et choisir la bonne structureSets : unicité, in rapide, union/intersection/différence ; tableau de décision liste vs tuple vs dict vs set ; mini-études de cas (doublons, comptage, annuaire)

Pièges et erreurs emblématiques du niveau

Mini-projets du niveau

Fiches détaillées dans /projects.

Critères de sortie

Commit de fin de niveau

git add lessons/level-03-structures-donnees
git commit -m "exercises: complete level 03 (data structures)"