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
listi 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.