Una llista
és una estructura de dades que conté una col·lecció ordenada d'elements. És a dir, podem emmagatzemar una seqüència d'elements a una llista. Pensem en la llista de la compra on tenim aquells productes que hem de comprar. Python ens guardaria la llista de la compra separant els elements amb comes en comtes línia a línia.
Per què Python entengui que és una llista, hem d'escriure els elements entre claudàtors. Un cop hem creat una llista, hi podem afegir, eliminar o cercar elements. Com que podem afegir i eliminar elements, en diem que la llista és de tipus variable , és a dir, que el seu tipus pot variar.
Malgrat fins ara hem anat deixant la discussió d'objectes i classes, ens trobem que ens cal una petita explicació per a poder entendre millor les llistes. En tot cas, més endavant tractarem aquests conceptes en detall al capítol corresponent.
Una llista és un exemple d'ús d'objectes i classes. Quan fem servir una variable
i
i li assignem un valor, diguem un 5
, podem pensar que estem creant un objecte
(instància) i
de la classe (tipus)
int
(enter). De fet, podem consultar help(int)
per a entendre-ho millor.
Les classes poden tenir mètodes ,
es a dir, funcions definides per ser usades respecte a la seva classe.
Aquestes funcions es poden fer servir únicament mitjançant objectes de la classe.
Per exemple, Python ofereix el mètode append
per a la classe
list
, què permet afegir un element al final de la llista.
Així, mylist.append('un element')
afegirà aquest string a la llista
mylist
. Fixem-nos en l'ús del punt per a accedir als mètodes
d'un objecte.
Les classes també poden tenir camps , què no són una altra cosa que variables definides per ser usades amb la seva classe. Podrem fer servir aquestes variables/noms únicament mitjançant un objecte de la classe. Els camps també s'accedeixen amb el punt. Per exemple, mylist.field
.
Example 9.1. Ús de les llistes
#!/usr/bin/python # -*- coding: utf-8 -*- # Filename: using_list.py # Aquesta és la meva llista de la compra shoplist = ['poma', 'mango', 'pastanaga', 'platan'] print 'Haig de comprar', len(shoplist), 'coses.' print 'El que haig de comprar és:', # Atenció a la coma al final de la línia for item in shoplist: print item, print '\nTambé hauria de comprar arrós.' shoplist.append('arrós') print 'Ara, la meva llista de la compra és', shoplist print 'Ordeno la llista' shoplist.sort() print 'La llista ordenada és', shoplist print 'El primer que compraré és', shoplist[0] olditem = shoplist[0] del shoplist[0] print 'ja he comprat', olditem print 'La meva llista de la compra és ara', shoplist
$ python using_list.py El que haig de comprar és: poma mango pastanaga platan També hauria de comprar arrós. Ara, la meva llista de la compra és ['poma', 'mango', 'pastanaga', 'platan', 'arr\xc3\xb3s'] Ordeno la llista La llista ordenada és ['arr\xc3\xb3s', 'mango', 'pastanaga', 'platan', 'poma'] El primer que compraré és arrós ja he comprat arrós La meva llista de la compra és ara ['mango', 'pastanaga', 'platan', 'poma']
La variable shoplist
podria ser la llista de la compra per a algú que va al mercat.
En aquest exemple, a shoplist
només emmagatzemem strings amb els noms dels productes
a comprar. Recordem, però, que hi podríem afegir qualsevol classe d'objecte,
incloen nombres o, fins i tot, altres llistes.
A l'exemple fem servir el bucle for..in
per a recorrer els elements de la llista.
Ja ens hem pogut adonar que una llista és també una seqüència. Més endavant discutirem les
particularitats de les seqüències.
section
Notem que fem servir la coma al final de la instrucció print
per indicar que no escrigui el salt de línia al final. És una manera una mica lletja de fer-ho, però
és simple i fa el que ha de fer.
A continuació, afegim un element fent servir el mètode append
de l'objecte llista. Llavors mostrem el contingut de la llista per comprovar que el nou element s'ha inserit. Malgrat el nou element apareix com a 'arr\xc3\xb3s'
quan escrivim el contingut de la llista, veiem que més endavant la cadena es recupera tal i com esperem.
Després ordenem els elements de la llista amb el mètode sort
.
Hem de tenir clar que aquest mètode modifica directament la llista en comptes de retornar-nos una llista modificada. En aquest sentit les llistes funcionen diferentment dels strings. En diem que les llistes són mutables mentre que els strings són immutables.
Un cop comprat un producte al mercat, el voldrem treure de la llista, cosa que podem fer amb la
instrucció del
. A l'exemple indiquem quin element de la llista volem eliminar
i del
se n'encarrega. Així del shoplist[0]
indica que es vol
eliminar el primer element de la llista (recordem que les llistes comencen pel 0)
Podem veure tots els mètodes definits per l'objecte llista amb
help(list)
.