A Byte of Python

Llistes

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.

Una introducció ràpida a objectes i classes

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 .

Ús de les llistes

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
				
				

Sortida

				
$ 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']
				
				

Com funciona

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