Retour au cours

collections et itertools essentiels

le module collections propose des conteneurs utiles au quotidien. itertools fournit des briques d’itération efficaces.

objectifs

  • compter des éléments avec Counter
  • regrouper facilement avec defaultdict
  • gérer une file/tampon circulaire avec deque
  • connaître itertools clés : islice, chain, pairwise, cycle, accumulate

explication détaillée

  • Counter : dict spécialisé {élément: compteur} avec .most_common()
  • defaultdict(list/set/int) : initialise auto la valeur par défaut
  • deque(maxlen=k) : file performante, fenêtre glissante naturelle
  • itertools : fonctions pour combiner/transformer des itérables paresseusement

exemples exécutables

from collections import Counter
cnt = Counter("abracadabra")
print(cnt.most_common(2))
from collections import defaultdict
by_first = defaultdict(list)
for w in ["alice", "ana", "bob", "bruce"]:
    by_first[w[0]].append(w)
print(dict(by_first))
from collections import deque
q = deque(maxlen=3)
for n in [1,2,3,4]:
    q.append(n)
print(list(q))  # [2,3,4]
from itertools import islice, chain, pairwise, cycle, accumulate
print(list(islice(range(100), 5)))
print(list(chain([1,2], [3,4])))
print(list(pairwise([1,2,3,4])))
print(list(islice(cycle("ab"), 5)))
print(list(accumulate([1,2,3,4])))

bonnes pratiques

  • Counter pour statistiques rapides (top-k, fréquences)
  • defaultdict(list) pour regrouper sans vérifier l’existence
  • deque(maxlen=k) pour fenêtres glissantes/logs récents
  • composez itertools pour du stream processing léger

pièges courants

  • oublier de convertir un defaultdict en dict pour sérialiser/afficher proprement
  • supposer que Counter conserve un ordre particulier (utilisez most_common)
  • confondre deque (double-ended queue) et list (performances différentes en tête)

exercices

  1. top 3 lettres d’un texte avec Counter.
  2. regrouper des mots par longueur avec defaultdict(list).
  3. fenêtres glissantes de taille 5 d’une séquence avec deque(maxlen=5).