Aller au contenu principal

Structures de données

Progression

#Structures de données

À quoi ça sert ?

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

pythonpython
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).

pythonpython
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é.

pythonpython
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.
pythonpython
1s1, s2 = {1,2,3}, {2,3,4}2print(s1 | s2, s1 & s2)

#Playground

Chargement de l’éditeur...

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

#Solutions (exemples)