Maison > Article > développement back-end > Découvrir les itertools
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 des itérateurs.
Dans cet article, je citerai 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 mis en place 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 : récupérer les données d'une séquence 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
mise en œuvre 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 nous 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 post, je mentionnerai d'autres fonctions de ce module
utile
bibliothèque standard Python. J'espère que cela vous sera utile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!