Structures de données
Progression
#Structures de données
À quoi ça sert: choisir la bonne structure pour modéliser votre problème et écrire un code lisible et efficace. Comment: comprendre mutabilité, ordre, unicité et complexités pour listes, tuples, dicts et sets.
1fruits = ['pomme','banane']2prix = {'pomme': 1.2, 'banane': 2.0}3print(len(fruits), prix['pomme'])
#Listes
Mutables et ordonnées. Opérations: append
, pop
, sort
, slices. Idéales pour des séquences modifiables et des parcours; attention aux insertions en tête (coûteuses).
1a = [3,1,2]2a.append(4)3a.sort()4print(a, a[1:])
#Dictionnaires
Associatifs clé→valeur (hash table). Itérations: .items()
, .keys()
, .values()
. Clés immuables et hashables. Très performant pour des recherches par clé.
1prix = {'pomme': 1.2, 'banane': 2.0}2for fruit, p in prix.items():3 print(fruit, p)
#Ensembles
Non ordonnés, sans doublons. Opérations ensemblistes: union, intersection. Utile pour éliminer des doublons et tester l’appartenance en O(1) amorti.
#Tuples
Immuables et ordonnés. Idéal pour des enregistrements de petite taille (p. ex. coordonnées), clés de dict ou retours multiples.
#Pièges fréquents
- Valeurs par défaut mutables dans des fonctions (voir chapitre Fonctions).
- Modifier une liste pendant qu’on l’itère; préférer construire une nouvelle liste (compréhension) ou itérer sur une copie.
1s1, s2 = {1,2,3}, {2,3,4}2print(s1 | s2, s1 & s2)
#Playground
#Exercices
- Écrire un tri par sélection sur une liste.
- Construire un index inversé mot→occurrences à partir d’un texte.
- Supprimer les doublons d’une liste en préservant l’ordre.
- Implémenter une file avec priorité (priority queue) en utilisant un tas binaire.