Mis a jour le 2024-03-17, 13:2

itertools

Offre plein de fonctions pratiques qui permettent de faciliter le travail sur les séquences (liste, tuples, chaînes).
pour enchaîner plusieurs itérables (ça peut être des listes, des strings, ...) :
for x in itertools.chain([1, 2, 3], [4, 5], [6, 7]):
    print(x)
  
donne un itérateur comme si c'était sur la liste [1, 2, 3, 4, 5, 6, 7]
Fonction de cycling à l'infini sur un itérable :
it = itertools.cycle(range(4))
for x in range(10):
    print(next(it))
  
imprime ici 0 1 2 3 0 1 2 3 0 1.
Fonction repeat qui répète un objet n fois :
for x in itertools.repeat('a', 5):
    print(x)
  
imprime ici a a a a a.
Fonction tee qui génère plusieurs itérateurs à partir d'une séquence :
for x in itertools.tee(['a', 'b'], 2):
    for y in x:
        print(y)
  
imprime a b a b.
Fonction count qui compte à l'infini :
it = itertools.count(3, 2)
for x in range(5):
    print(next(it))
  
imprime ici 3 5 7 9 11.
Fonction islice :
Fonction product qui renvoie le produit cartésien :
Fonction permutations qui renvoie toutes les permutations possibles :
Génération des combinaisons de p éléments à partir d'un itérable :
Fonction compress qui sélectionne seulement les éléments du premier itérable pour lesquels l'élément correspondant du 2ème itérable est vrai :
for x in itertools.compress(['A', 'B', 'C', 'D'], [1, 0, 1, 0]):
    print(x)
  
imprime les éléments A C.
Fonction ifilter qui garde seulement les éléments d'une itérable quand une expression est vraie (équivalent à filter, mais renvoie un itérateur plutôt qu'une liste) :
Fonction imap qui applique une fonction sur les éléments d'un itérable et renvoie un itérateur (équivalent à map, mais renvoie un itérateur plutôt qu'une liste) :
for x in list(itertools.imap(lambda t : 2 * t, [1, 2, 3])):
    print(x)
  
imprime les éléments 2 4 6.
Fonction starmap : comme imap, sauf que chaque élément peut être une séquence de n éléments et la fonction prend n éléments :
for x in itertools.starmap(lambda x, y: x + y, [[1, 2], [3, 4], [5, 6]]):
    print(x)
  
imprime 3 7 11.
Fonction izip : comme zip, mais retourne un itérateur plutôt qu'une liste :
for x in itertools.izip(['a', 'b', 'c'], ['A', 'B', 'C']):
    print(x)
  
donne :
('a', 'A')
('b', 'B')
('c', 'C')
Fonction dropwhile qui jette au contraire les éléments d'un itérable tant qu'une expression est vraie, puis dès la première valeur fausse, garde tous les éléments :
for x in itertools.dropwhile(lambda t: t < 4, [1, 2, 5, 3, 7]):
  print(x)
  
jette les éléments tant qu'ils sont toujours inférieur à 4, et dès qu'on atteint 5, garde tous les éléments (même si la condition redevient vraie pour certains). Imprime ici 5 3 7.
Fonction takewhile : garde les éléments d'un itérable tant qu'une expression est vraie, puis dès la première valeur fausse, jette tous les éléments :
for x in itertools.takewhile(lambda t: t < 4, [1, 2, 5, 3, 7]):
    print(x)
  
imprime ici 1 2.
Fonction groupby qui permet de grouper les éléments en fonction d'une fonction clef pour calculer des aggrégats :

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert