Ce face itertools.chain()
chain(a, b, c) produce toate elementele lui a, apoi ale lui b, apoi ale lui c, fără să construiască o listă nouă. Funcționează cu orice iterabile: liste, tupluri, texte, generatoare.
chain.from_iterable(liste) primește o singură colecție de colecții și le „aplatizează” pe un nivel; este util când nu știi dinainte câte liste ai.
Parametri
| Parametru | Descriere |
|---|---|
*iterabile |
Colecțiile parcurse pe rând. |
Ce returnează
Un iterator.
Exemple
Exemplul 1: Mai multe liste într-una
from itertools import chain
fructe = ["mere", "pere"]
legume = ("roșii",)
print(list(chain(fructe, legume, "ab")))
clase = [["Ana", "Dan"], ["Ioana"], ["Mihai", "Elena"]]
print(list(chain.from_iterable(clase)))
Rezultat
['mere', 'pere', 'roșii', 'a', 'b']
['Ana', 'Dan', 'Ioana', 'Mihai', 'Elena']
Greșeli frecvente
- Aplatizezi o listă de liste cu
sum(liste, []). Este foarte lent pe liste mari; foloseștechain.from_iterable().
Comenzi înrudite
list.extend(): Adaugă la sfârșitul listei toate elementele unei alte colecții.itertools.islice(): Ia o „felie” dintr-un iterator sau generator, ca [start:stop:pas] la liste.yield (generatoare): Transformă o funcție într-un generator, care produce valorile una câte una, la cerere.