Iterable (Python)

Què és un iterable en Python? Definició clara, diferència amb iterador, exemples pràctics amb conjunts (set), llistes i diccionaris, i bones pràctiques d’iteració.

« Back to Glossary Index

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ça StopIteration).
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 serveix A[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) i all(it) per a verificacions lògiques eficients

Errors i bones pràctiques

  • Indexació de set: no és possible; utilitza sorted(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 per next().
  • 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.
« Back to Glossary Index