Le module itertools

Adresse : http://docs.python.org/3.3/library/itertools.html

Utilité : création d’itérateurs pour boucles efficaces

Syntaxe : import itertools, ou from itertools import *, ou from itertools import accumulate, etc.

Voici une sélection de fonctions issues du module itertools :

count(n, h) crée un itérateur démarrant à n, de pas h (h = 1 par défaut)
cycle(s) crée un itérateur produisant en boucle les valeurs d’une séquence finie s
repeat(x,n) crée un itérateur produisant n fois la valeur x (si n absent, répétition infinie)
accumulate(s)
accumulate(s,f )
crée un itérateur produisant les sommes cumulées d’une séquence finie s.
crée un itérateur produisant les valeurs v = s , v = f (v , s ), v = f (v , s ), etc.
0 0 1 0 1 1 1 2
chain(s,s’,s »,· · · ) crée un itérateur produisant les valeurs de s, puis celles de s’, celles de s », etc.
product(s,s’,s »,· · · )
product(s,repeat=n)
crée un itérateur produisant les valeurs du produit cartésien s × s’ × s » × · · ·
crée un itérateur produisant les valeurs du produit cartésien sn
permutations(s,n)
permutations(s)
crée un itérateur produisant les n-uples d’éléments distincts
crée un itérateur produisant les permutations d’éléments de la séquences s
combinations(s,n) crée un itérateur produisant les n-uples ordonnés d’éléments distincts
(utiliser combinations_with_replacement pour des combinaisons avec répétitions)

Voici quelques exemples d’utilisation.

On a utilisé le constructeur list pour visualiser facilement la liste des valeurs rendues par les différents itérateurs créés ici, mais on répète que l’utilité de ces itérateurs (on devrait plus précisément parler de générateurs) est de nous permettre d’accéder aux valeurs successives d’une séquence, sans pour autant créer la totalité de cette séquence en mémoire.

Les générateurs tels qu’ils sont créés ici sont en général utilisés dans un “contexte d’itération” (boucle for). Ils peuvent également être utilisés “en mode manuel”, en leur demandant de délivrer leurs valeurs par des next successifs.

On visitera http://docs.python.org/3.3/library/itertools.html#itertools-recipes pour de nombreux exemples d’utilisation des fonctions du module itertools

Retour à l’accueil du cours Python/Numpy

Sommaire du chapitre 7

  1. Le module random
  2. Le module decimal
  3. Le module fractions
  4. Le module string
  5. Le module itertools
  6. Les modules operator et functools
  7. Le module time
  8. La classe Counter du module collections
  9. La classe deque du module collections
  10. Le module heapq
  11. Le module bisect
  12. Le module copy
  13. Autres modules et adresses utiles