Découvrir les itertools

WBOY
Libérer: 2024-09-03 10:40:01
original
611 Les gens l'ont consulté

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)

Copier après la connexion
    2
    4
    6
    8
    10
Copier après la connexion
Copier après la connexion

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

Copier après la connexion
    2
    4
    6
    8
    10
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion
    (1, 2)
    (3, 4)
    (5, 6)
    (7,)
Copier après la connexion

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)
Copier après la connexion
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
Copier après la connexion

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)
Copier après la connexion
   1 5
    1 6
    1 7
    2 5
    2 6
    2 7
    3 5
    3 6
    3 7
Copier après la connexion

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)
Copier après la connexion
    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
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal