Llistes
Una llista guarda diversos valors en una sola variable, en ordre.
Crear una llista
Fins ara cada variable guardava un sol valor. Una llista (en anglès, list) pot guardar-ne molts, separats per comes i entre claudàtors [ ]:
Una llista pot contenir valors de qualsevol tipus: enters, decimals, textos, o fins i tot una barreja. També pot estar buida:
Prova a crear la teva pròpia llista i mostra-la:
Accedir a elements: indexació i len()
Els elements d'una llista s'indexen exactament igual que els caràcters d'un text: amb [0] per al primer, [-1] per a l'últim, i len() per saber quants n'hi ha:
Pots llegir i modificar un element concret assignant-li un valor nou:
Afegir i treure elements
.append(valor) afegeix un element al final de la llista. És el mètode que faràs servir més sovint per construir llistes dinàmicament:
.pop() treu i retorna l'últim element. Si li passes un índex, treu el de la posició indicada:
del llista[i] esborra l'element de la posició i sense retornar-lo:
Recórrer una llista amb for
La manera més senzilla de visitar tots els elements d'una llista és for x in llista:. En cada iteració, x pren el valor de l'element corresponent:
Pots operar amb cada element dins del bucle. Per exemple, sumar tots els valors d'una llista de nombres:
De fet, Python ja té funcions integrades per a les operacions més habituals sobre llistes numèriques: sum(), min() i max():
Recórrer amb índex: for i in range(len(...))
De vegades no sols vols el valor, sinó també saber a quina posició és. Pots combinar range() i len() per obtenir l'índex a cada pas:
Tenir l'índex també et permet modificar elements mentre recorres la llista. Per exemple, doblar tots els valors:
Llistes de textos i .split()
Recordes .split() del capítol anterior? Divideix un text i retorna una llista de paraules. Ara que coneixes les llistes, pots treballar amb el resultat com vulguis:
Pots passar-li un separador diferent de l'espai. Per exemple, per dividir una data en parts:
La funció inversa és ", ".join(llista), que uneix els elements amb un separador:
Errors típics
1. IndexError: accedir a un índex que no existeix — si la llista té 3 elements, els índexs vàlids van de 0 a 2. Qualsevol altre valor donarà error:
2. Oblidar que .append() no retorna res útil — un error molt freqüent és assignar el resultat de .append() a la pròpia llista, cosa que la sobreescriu amb None:
3. Modificar una llista mentre la recorres — afegir o esborrar elements dins d'un for x in llista: pot saltar-se elements o donar IndexError. Si has de modificar la llista, usa range(len(llista)) o treballa amb una còpia:
Exercici
Per exemple, si l'usuari introdueix 10, 20, 30, 40 i 50, la sortida ha de ser 30.0.
Pista: guarda cada nombre llegit a la llista amb .append(). Quan tinguis els 5, calcula la mitjana amb sum() i len().
Resum
- Una llista s'escriu entre claudàtors:
[1, 2, 3]. Pot estar buida ([]) i contenir qualsevol tipus de valor. llista[i]accedeix a l'element de la posiciói; els índexs negatius compten des del final.len(llista)retorna el nombre d'elements..append(valor)afegeix un element al final;.pop()en treu l'últim (o el de la posició indicada);del llista[i]esborra l'elementisense retornar-lo.for x in llista:visita tots els elements;for i in range(len(llista)):t'dóna l'índex a cada pas.sum(),min()imax()funcionen directament sobre llistes numèriques.text.split()retorna una llista de paraules;sep.join(llista)fa el camí invers.