Heim  >  Artikel  >  Backend-Entwicklung  >  Entdecken Sie itertools

Entdecken Sie itertools

WBOY
WBOYOriginal
2024-09-03 10:40:01510Durchsuche

Descubriendo itertools

Itertools ist eine der interessantesten Python-Bibliotheken. Es enthält eine Reihe von Funktionen, die von funktionalen Sprachen inspiriert sind und für die Arbeit mit Iteratoren verwendet werden.

In diesem Artikel werde ich einige erwähnen, die mir am meisten aufgefallen sind und die es wert sind, im Hinterkopf behalten zu werden, um nicht jedes Mal das Rad neu zu erfinden.

Zählen

Mehrmals habe ich eine unendliche Zählung implementiert (naja, es endet
explizit irgendwann mit einer Pause) mithilfe einer while-True-Schleife. itertools bietet uns eine bessere Alternative:

    from itertools import count

    for i in count(start=2, step=2):
        if i > 10:
            break
        print(i)

    2
    4
    6
    8
    10

Wie im Beispiel zu sehen ist, würde count ohne die Pause unendlich viele Zahlen zurückgeben. Der obige Code entspricht in etwa:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i += 2

    2
    4
    6
    8
    10

gestapelt

Eine Funktion, die etwas sehr Häufiges tut: Daten aus einer Sequenz in Stapeln der Größe n abrufen. Schauen wir uns ein Beispiel an:

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,)

Es ist zu beachten, dass die letzte Charge eine Größe kleiner oder gleich n haben kann, wie in diesem Fall. Ziemlich nützlich, finden Sie nicht?

paarweise

Eine weitere einfache und nützliche Funktion. Bei einer gegebenen Sequenz (eigentlich bei einem gegebenen Iterator) liefert sie uns ihre Elemente paarweise.

Sehen wir es uns anhand eines Beispiels genauer an:

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

Die Anzahl der Paare ist um eins kleiner als die Größe der Eingabesequenz.

Produkt

Abschließend möchte ich in diesem kurzen Eintrag über ein Produkt sprechen, ein
Implementierung des kartesischen Produkts.

Nützlich, um ein verschachteltes for zu ersetzen, das zwei Datenströme durchläuft:

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

Erhält einen Parameter, der es uns ermöglicht, das kartesische Produkt von a zu erstellen
Sequenz mit sich selbst:

   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

In einem zukünftigen Beitrag werde ich weitere Funktionen dieses nützlichen
Moduls erwähnen Python-Standardbibliothek. Ich hoffe, es ist nützlich für Sie.

Das obige ist der detaillierte Inhalt vonEntdecken Sie itertools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn