Itertools est l'une des bibliothèques Python les plus intéressantes. Il contient une série de fonctions inspirées des langages fonctionnels utilisés pour travailler avec les itérateurs.
Dans cet article, je mentionnerai quelques-uns de ceux qui ont le plus retenu mon attention et qu'il convient de garder à l'esprit pour ne pas réinventer la roue à chaque fois.
Plusieurs fois j'ai implémenté un décompte infini (enfin, ça se termine
explicitement à un moment donné avec une pause) en utilisant une boucle while True. itertools nous offre une meilleure alternative :
from itertools import count for i in count(start=2, step=2): if i > 10: break print(i)
2 4 6 8 10
Comme on peut le voir dans l'exemple, sans la pause, count renverrait des nombres infinis. Le code ci-dessus est à peu près équivalent à :
i = 2 while True: if i > 10: break print(i) i = 2
2 4 6 8 10
Une fonction pour faire quelque chose de très courant : obtenir les données d'un flux par lots de taille n. Regardons un exemple :
from itertools import batched sequence = [1, 2, 3, 4, 5, 6, 7] for batch in batched(sequence, 2): # lotes de tamaño 2 print(batch)
(1, 2) (3, 4) (5, 6) (7,)
Il est à noter que le dernier lot peut être d'une taille inférieure ou égale à n, comme dans ce cas. Très utile, vous ne trouvez pas ?
Une autre fonction simple et utile. Étant donné une séquence (en fait, étant donné un itérateur), elle nous donne ses éléments par paires.
Voyons mieux avec un exemple :
from itertools import pairwise sequence = [1, 2, 3, 4, 5, 6, 7] for a, b in pairwise(sequence): print(a, b)
1 2 2 3 3 4 4 5 5 6 6 7
Le nombre de paires est inférieur d'une à la taille de la séquence d'entrée.
Enfin, pour cette courte entrée, je veux parler de produit, un
implémentation du produit cartésien.
Utile pour remplacer un for imbriqué qui boucle à travers deux flux de données :
from itertools import product A = [1, 2, 3] B = [5, 6, 7] for a, b in product(A, B): print(a, b)
1 5 1 6 1 7 2 5 2 6 2 7 3 5 3 6 3 7
Reçoit un paramètre qui permet de faire le produit cartésien d'un
séquence avec lui-même :
from itertools import product A = [1, 2, 3] for a1, a2, a3 in product(A, repeat=3): print(a1, a2, a3)
1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 1 3 2 1 3 3 2 1 1 2 1 2 2 1 3 2 2 1 2 2 2 2 2 3 2 3 1 2 3 2 2 3 3 3 1 1 3 1 2 3 1 3 3 2 1 3 2 2 3 2 3 3 3 1 3 3 2 3 3 3
Dans un prochain article, je mentionnerai d'autres fonctions de ce module utile
bibliothèque standard python. J'espère que cela vous sera utile.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3