"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Découvrir les outils itertools

Découvrir les outils itertools

Publié le 2024-11-07
Parcourir:500

Descubriendo 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 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.

Compter

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

par lots

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 ?

par paires

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.

produit

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.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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