itertools.batched() în Python

Modulul itertools Python 3.12+ (strict: 3.13+)

Împarte o colecție în loturi (tupluri) de câte n elemente.

Sintaxă
itertools.batched(iterabil, n, *, strict=False)

Ce face itertools.batched()

batched(colectie, n) produce tupluri de câte n elemente; ultimul lot poate fi mai scurt. Este util pentru trimiterea datelor pe bucăți (de exemplu câte 100 de rânduri într-o bază de date sau câte 50 de email-uri).

Din Python 3.13, strict=True aruncă ValueError dacă ultimul lot nu este complet.

Parametri

Parametru Descriere
iterabil Elementele.
n Mărimea unui lot (cel puțin 1).
strict Opțional. Eroare dacă ultimul lot este incomplet.

Ce returnează

Un iterator de tupluri.

Exemple

Exemplul 1: Loturi de câte 3

from itertools import batched
destinatari = ["ana", "dan", "ioana", "mihai", "elena", "radu", "maria"]
for lot in batched(destinatari, 3):
    print(lot)
try:
    list(batched(range(5), 2, strict=True))
except ValueError as e:
    print("Eroare:", e)

Rezultat

('ana', 'dan', 'ioana')
('mihai', 'elena', 'radu')
('maria',)
Eroare: batched(): incomplete batch

Greșeli frecvente

  • Folosești batched pe Python 3.11 sau mai vechi și primești ImportError. Acolo scrie o buclă cu islice.

Comenzi înrudite

  • itertools.islice(): Ia o „felie” dintr-un iterator sau generator, ca [start:stop:pas] la liste.
  • itertools.pairwise(): Produce perechile de elemente vecine: (a, b), (b, c), (c, d)…
  • range(): Generează un șir de numere întregi, folosit mai ales în bucle for.