Definició: En Python, un iterable és qualsevol objecte que es pot recórrer element a element. Tècnicament, és un objecte que pot retornar un iterador quan s’hi aplica la funció iter()
. Això permet utilitzar-lo en bucles for
, en comprensions de llistes i en moltes funcions integrades que consumeixen seqüències.
Iterable vs. Iterador
- Iterable: objecte capaç de proporcionar un iterador (p. ex.
list
,tuple
,dict
,set
,str
). - Iterador: objecte que sap retornar els elements d’un en un amb
next()
fins que s’acaben (llençaStopIteration
).
colors = {"vermell", "blau", "verd"} # un conjunt (set) és iterable
it = iter(colors) # obtenim un iterador (set_iterator)
print(next(it)) # retorna un element del conjunt
Conjunts (set
) com a iterables
Els set
són iterables: es poden recórrer amb for
i convertir a altres col·leccions. No tenen ordre i no admeten duplicats.
A = {"vermell", "blau", "verd"}
for color in A:
print(color) # l'ordre d'impressió no està garantit
llista = list(A) # conversió possible, però l'ordre pot variar
Conseqüències de la manca d’ordre
- No es pot indexar un
set
(no serveixA[0]
). - Si cal ordre estable, converteix-lo a
list
i ordena:sorted(A)
.
Exemples d’iteració
# Llista
nums = [2, 4, 6]
for n in nums:
print(n)
# Diccionari (iterable sobre claus)
d = {"a": 1, "b": 2}
for k in d: # equivalent a: for k in d.keys():
print(k, d[k])
# Conjunt
s = {1, 2, 3}
for x in s:
print(x)
Funcions i patrons útils amb iterables
len(iterable)
,sum(nombres)
,max(iterable)
,min(iterable)
list(iterable)
,tuple(iterable)
,set(iterable)
- Comprensions:
[f(x) for x in iterable]
,{f(x) for x in iterable}
any(it)
iall(it)
per a verificacions lògiques eficients
Errors i bones pràctiques
- Indexació de
set
: no és possible; utilitzasorted(set_)
si necessites posicions. - Consum d’iteradors: un iterador es “gota” després de recórrer-lo; crea’n un de nou amb
iter(iterable)
si cal. - Grandàries grans: prefereix generar valors sota demanda (generadors) en lloc de llistes si hi ha molta memòria en joc.
Vegeu també
- Iterador (Python): objecte retornat per
iter()
i consumit pernext()
. - Conjunt (
set
): col·lecció iterable, sense duplicats i no ordenada. - Comprensions: sintaxi compacta per crear col·leccions a partir d’iterables.
- Generadors i
yield
: creació d’iteradors personalitzats que generen valors sota demanda.