itertools.tee() în Python

Modulul itertools Python 3.0+

Creează n iteratoare independente din unul singur, ca un generator să poată fi parcurs de mai multe ori.

Sintaxă
itertools.tee(iterabil, n=2)

Ce face itertools.tee()

Un generator poate fi parcurs o singură dată. tee(it, n) returnează un tuplu de n iteratoare, fiecare producând toate valorile, independent de celelalte. Valorile deja citite de un iterator, dar nu și de celelalte, sunt păstrate în memorie.

După tee(), nu mai folosi iteratorul original. Dacă un iterator consumă aproape tot înaintea celorlalte, o simplă list() este mai eficientă.

Parametri

Parametru Descriere
iterabil Sursa.
n Opțional. Numărul de copii. Implicit 2.

Ce returnează

Un tuplu de iteratoare.

Exemple

Exemplul 1: Două parcurgeri ale aceluiași generator

from itertools import tee
valori = (n * n for n in range(1, 6))
pentru_suma, pentru_maxim = tee(valori)
print(sum(pentru_suma), max(pentru_maxim))
a, b, c = tee("xyz", 3)
print(list(a), next(b), list(c))

Rezultat

55 25
['x', 'y', 'z'] x ['x', 'y', 'z']

Greșeli frecvente

  • Continui să folosești iteratorul original după tee(); copiile pierd valorile consumate astfel.

Comenzi înrudite

  • iter() și next(): iter() obține un iterator dintr-o colecție; next() ia următorul element din iterator.
  • yield (generatoare): Transformă o funcție într-un generator, care produce valorile una câte una, la cerere.
  • itertools.islice(): Ia o „felie” dintr-un iterator sau generator, ca [start:stop:pas] la liste.