Une classe est un modèle qui regroupe des données (les attributs : nom, âge, ville) et des actions (les méthodes). Un objet est un exemplaire de ce modèle : la personne Léa, 31 ans. Sans classe, on range les mêmes informations dans des listes parallèles, où la case n de chaque liste doit parler de la même personne. Il suffit de trier une seule liste pour casser ce lien : sur 10 personnes, 1,0 ligne seulement reste cohérente en moyenne, 9,0 sont mélangées (90,0 %). Avec une liste d'objets, le nom, l'âge et la ville voyagent ensemble : on trie les personnes, pas les colonnes.
Des fiches de bibliothèque agrafées par personne, face à trois tas de papiers séparés (noms, âges, villes) : battre un seul tas, c'est perdre qui a quel âge.
Pour n personnes dont on trie les âges seuls, chaque ligne a une chance sur n de retomber à sa place, donc il en reste 1 en moyenne, quel que soit n : la part de lignes mélangées vaut (n − 1) ÷ n, soit 90,0 % pour 10 personnes et 99,0 % pour 100. Le graphique donne cette part selon le nombre de personnes ; plus il y en a, plus l'écart avec un objet qui garde tout ensemble est grand.
Réglez le nombre de personnes et le nombre de listes à tenir synchronisées. Le premier graphique donne la part de lignes mélangées quand on trie une seule liste ; le point blanc est votre réglage.
Hypothèse : ordre initial quelconque et valeurs distinctes ; lignes mélangées = n − 1 en moyenne.
La probabilité qu'aucune ligne ne reste à sa place vaut 50,0 % pour 2 personnes, 33,3 % pour 3, 36,7 % pour 5 et 36,8 % pour 10 : elle se stabilise autour de 36,8 %, soit environ 1 chance sur 3, quelle que soit la taille du groupe. Dans ce cas, le tableau est entièrement faux.
Formule : somme de (−1)^i ÷ i! pour i de 0 à n, qui tend vers 1 ÷ e ≈ 36,8 %.
Voici la démarche, puis un exemple.
noms = ["Léa", "Tom", "Inès"] ages = [31, 24, 45] ages.sort() # [24, 31, 45] : noms n'a pas bougé ! class Personne: def __init__(self, nom, age): self.nom = nom self.age = age gens = [Personne("Léa", 31), Personne("Tom", 24), Personne("Inès", 45)] gens.sort(key=lambda p: p.age) # le nom voyage avec l'âge
Un objet regroupe ses données. Mais si n'importe quel code peut les modifier, plus rien n'est garanti. C'est le rôle de l'encapsulation.
Statistiques, finance quantitative, machine learning, deep learning, LLM, agents IA, MLOps : 321 épisodes avec des simulateurs à manipuler, pas des vidéos.
Statistics, quantitative finance, machine learning, deep learning, LLMs, AI agents, MLOps: 321 interactive episodes with simulators to play with, not videos.