Maison  >  Article  >  développement back-end  >  Découvrir les itertools

Découvrir les itertools

WBOY
WBOYoriginal
2024-09-03 10:40:01590parcourir

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

Compter

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

par lots

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 ?

par paire

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
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn