El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Enumerate: indexant les llistes en Python

Quan feim feina amb llistes de tant en tant en sorgeix la necessitat de fer feina amb l'index de la llista en lloc (o a més) de l'element de la llista en sí.

Sovint ens podem trobar fent coses com

1 2 3 4 5x = ['a','b','c'] i = 0 for item in x: i +=1 print i, item

Davant aquest tipus de problemes, pensau que el més habitual és que el propi llenguatge ja ho tengui resolt, de la mateixa manera que els problemes més habituals de la programació web estan resolts per Django.

El nostre problema es redueix a fer servir enumerate. Aquesta funció agafa un iterador (una llista per exemple) i ens retorna un nou iterador, els elements del qual són una tupla composta pel comptador (l'índex) i l'element de l'iterador inicial que li passam com a paràmetre.

enumerate pot agafar com a paràmetre un nombre que serà el valor inicial de la seqüència (per defecte zero). La seva sintaxi és doncs enumerate(iterable, start=0)

Amb això podem escriure el codi anterior com

1 2 3x = ['a','b','c'] for i, item in enumerate(x): print i, item

o sí volem comptar a partir d'1

1 2 3x = ['a','b','c'] for i, item in enumerate(x, 1): print i, item

El nom a més és prou descriptiu de la funcionalitat que fa, amb la qual cosa el codi ens queda fins i tot millor documentat.

blog comments powered by Disqus