Llistes¶
Què són les llistes?¶
Llista: conjunt ordenat de valors identificats per un índex.
Els valors d’una llista s’anomenen elements.
Les llistes i els strings són seqüències, vegeu Common Sequence Operations.
Construcció de llistes¶
Elements separats per comes i entre claudàtors
[10, 20, 30, 40] ["spam", "bungee", "swallow"] ["hello", 2.0, 5, [10, 20]]
Llista homogènia: tots els elements són del mateix tipus. Altrament, la llista és heterogènia.
Llista buida:
[],list.Llistes i expressions booleanes.
Una variables es pot referir a una llista (assignació).
Operacions comunes als tipus seqüència¶
Accés als elements¶
L’operador claudàtor [] selecciona un únic element de la llista.
Els índex són enters i comencen per 0.
L’accés a un element inexistent provoca in error d’execució.
Els índexs negatius comencen a comptar des del final de la llista.
Longitud d’una llista¶
La funció
lenretorna el nombre d’elements de la llista.Els darrer element d’una llista ocupa l’índex longitud menys u.
Recorregut d’una llista amb
while.
Pertinença a una llista¶
L’operador de pertinença és
in.També es pot usar
not in.
Concatenació de llistes¶
Concatenació:
+.Repetició:
*.
Llesques¶
L’operador llesca
llista[n:m]obté la subllista que comença en l’element d’índexninclòs i acaba en el d’índexmexclòs.nes pot ometre: comença en el primer element.mes pot ometre: va fins al darrer element.Si s’ometen tots dos: tota la llista.
Strings i llistes¶
Mètodes
str.split()istr.join().Exemples:
Divises (split).
fi:temes/iteracions/Dígits_d_un_nombre_enter/index: 3 (list, join).
fi:temes/strings/Afegir_**_al_mig/index: 2 (list, join).
Separar les paraules només amb un espai en blanc (split, join).
Analitzar una adreça electrònica (split). Construir una adreça electrònica (join).
Funció
list: retorna una llista a partir d’un tipus seqüència.Funció
str: retorna un string a partir de qualsevol valor.
Funcions predefinides sobre llistes¶
Les llistes són mutables¶
Les llistes són mutables: podem canviar els elements.
Operador d’accés usat a l’esquerra d’una assignació.
>>> fruit = ["banana", "apple", "quince"] >>> fruit[0] = "pear" >>> fruit[2] = "orange" >>> fruit ['pear', 'apple', 'orange']
Operador llesca usat a l’esquerra d’una assignació.
>>> a_list = ["a", "b", "c", "d", "e", "f"] >>> a_list[1:3] = ["x", "y"] >>> a_list ['a', 'x', 'y', 'd', 'e', 'f']
Operador llesca usat per esborrar.
>>> a_list = ["a", "b", "c", "d", "e", "f"] >>> a_list[1:3] = [] >>> a_list ['a', 'd', 'e', 'f']
Operador llesca usat per inserir elements.
>>> a_list = ["a", "d", "f"] >>> a_list[1:1] = ["b", "c"] >>> a_list ['a', 'b', 'c', 'd', 'f'] >>> a_list[4:4] = ["e"] >>> a_list ['a', 'b', 'c', 'd', 'e', 'f']
Vegeu Mutable Sequence Types.
Esborrat en llistes¶
Sentència
del: esborrar un element.>>> a = ["one", "two", "three"] >>> del a[1] >>> a ['one', 'three']
Sentència
del: esborrar una llesca.>>> a_list = ["a", "b", "c", "d", "e", "f"] >>> del a_list[1:5] >>> a_list ['a', 'f']
Mètodes de llistes¶
Generació de llistes¶
Generació de llistes a partir dels elements:
[]iappend().
Recorregut dels elements d’una llista¶
La sentència for¶
L’iterador
forpermet recórrer llistes:for element in llista: sentències
La llista de la capçalera d’un
forpot ser una expressió qualsevol que s’avaluï a una llista.
Propòsit d’un recorregut¶
- Sintetitzar
Calcular un resultat que sintetitza els valors dels elements de la llista. Per exemple, sumar el elements, calcular el màxim o el mínim, comptar els elements,
str.join()…L’esquema general és
def sintetiza(llista): s = element_neutre_acumula for elem in llista: s = acumula(s, elem) return s
on només cal decidir
quina és la operació
acumula, iquin és l’element neutre d’aquesta operació (
element_neutre_acumula)
- Aplicar
Generar una llista resultat on cada element es calcula aplicant (cridant) una funció sobre l’element corresponent de la llista dada. Per exemple, el producte d’un nombre pels elements de la llista…
L’esquema general és
def aplica(llista): r = [] for elem in llista: elem_r = funció(elem) r.append(elem_r) return r
on només cal decidir
quina és la funció que cal aplicar a cada element (
funció).
- Filtrar
Generar una llista resultat a partir dels elements de la llista dada que compleixin una condició. Per exemple, calcular la llista dels nombres positius…
L’esquema general és
def filtra(llista): r = [] for elem in llista: if condició(elem): r.append(elem) return r
on només cal decidir
quina és la condició que han de complir els elements triats (
condició).
- Combinacions dels anteriors
Qualsevol combinació de sintetitzar, aplicar i sintetitzar.
Filtrar i sintetitzar: Strings i llistes: conversió, split, join, 7.
Cercar en una llista¶
Decidir si algun dels elements d’una llista compleix una condició.
L’esquema general és
def cerca(llista):
trobat = False
for elem in llista:
trobat = condició(elem)
if trobat:
break
return trobat
on només cal decidir
quina és la condició que ha de complir l’element que busquem (
condició).
Recorregut dels índexs d’una llista¶
Usant
forirange.for índex in range(len(llista)): sentències
Usant
forienumerate.for índex, element in enumerate(llista): sentències
Quan cal recórrer els índexs?¶
Quan el resultat és un índex (o posició).
Índex del màxim, índex del primer nombre negatiu…
Pessetes: 5.
Quan cal modificar algun element de la llista.
Quan cal recórrer dues llistes en paral·lel.
Vectors: 4, 5.
Quan cal desplaçar finestres.
Telèfons: 2
Llistes imbricades: creixent.
Les llistes com a paràmetres¶
def f(p):
p[0] *= 2
a = [1, 2, 3]
f(a)
Durant la crida a
f, el paràmetrepés àlies de l’argumenta: es refereixen al mateix objecte.
Funcions i funcions modificadores¶
Funció modificadora: funció que modifica algun dels seus paràmetres.
Funció: funció que no modifica cap dels seus paràmetres.
Les funcions retornen un valor que només depèn dels seus paràmetres.
Què és millor?¶
En cas de dubte: funcions.
Llistes imbricades¶
Llista imbricada: llista en què almenys un dels seus element és una altra llista.
Exemples d’accés.
L’operador claudàtor s’avalua d’esquerra a dreta.
Exemples:
Llistes imbricades: 1, 2.
Cinc al dia: 1, 3.
Daus: 2, 3.
Matrius¶
Les llistes imbricades s’usen sovint per representar matrius.
>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> matrix[1]
[4, 5, 6]
>>> matrix[1][1]
5
Objectes i valors¶
Les variables referencien objectes.
Tot objecte té un identificador únic: funció id.
Exemples amb strings i llistes.
Àlies¶
Si les variables
aibes refereixen al mateix objecte direm quebés àlies d’a.Qualsevol canvi en
aes veu reflectit en el seu àliesb.
Clonant llistes¶
Clonar un objecte consisteix en obtenir-ne una còpia idèntica.
L’operador llesca sempre obté una nova llista.
Ús de l’operador llesca per clonar llistes.
El paràmetre key en ordenació, màxim i mínim¶
El mètode
sort()de llistes i les funcionssorted(),min()imax()tenen un paràmetre opcionalkey.El paràmetre opcional
keyés útil quan cal comparar els elements de la llista per un criteri diferent de l’ordre estàndard.Exemples:
Donada una llista d’strings ordenar-la per la longitud dels strings en comptes de per ordre lexicogràfic.
candidats.can_mes_votat(), temes/diccionaris/Directius/index 2.
Llista per comprensió¶
Una llista per comprensió és una construcció sintàctica que permet crear una nova llista a partir d’una llista donada.
La notació s’inspira en la de construcció de conjunts.
Sintaxi:
[expr for item1 in seq1 ... for itemX in seqX if condition]
La funció range¶
range(m, n)retorna un objecte de tipusrangeque representa un interval de nombres enters consecutius que comença perminclòs i va fins anexclòs.>>> r = range(3, 10) >>> list(r) [3, 4, 5, 6, 7, 8, 9]
mes pot ometre:range(n)comença per 0.>>> r = range(5) >>> list(r) [0, 1, 2, 3, 4]
range(m, n, p)retorna el conjunt d’enters demancomptant depenp.>>> r = range(4, 10, 2) >>> list(r) [4, 6, 8]
ppot ser negatiu. Aleshoresm > n.>>> r = range(8, 3, -1) >>> list(r) [8, 7, 6, 5, 4]