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
itertoolsclé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
Counterpour statistiques rapides (top-k, fréquences)defaultdict(list)pour regrouper sans vérifier l’existencedeque(maxlen=k)pour fenêtres glissantes/logs récents- composez
itertoolspour du stream processing léger
pièges courants
- oublier de convertir un
defaultdicten dict pour sérialiser/afficher proprement - supposer que
Counterconserve un ordre particulier (utilisezmost_common) - confondre
deque(double-ended queue) et list (performances différentes en tête)
exercices
- top 3 lettres d’un texte avec
Counter. - regrouper des mots par longueur avec
defaultdict(list). - fenêtres glissantes de taille 5 d’une séquence avec
deque(maxlen=5).