Un programa sol necessitar emmagatzemar conjunts de dades, com pot ser una llista de compra, un llistat d’amics de xarxes socials, participants a un joc,…. Les estructures de dades són la solució per aquests casos.
En aquest tema estudiam l’estructura de dades llista. Són un tipus de dades que permet emmagatzemar dades de qualsevol tipus (nombres, cadenes, altres llistes, …, són mutables i dinàmiques (poden crèixer).
- ENTREGA: 2 EXERCICIS PRÀCTICS.
Crear una llista
A la imatge x és una variable llista que conté 8 elements, a la llista estan enumerats (posicionats) de la posició 0 a la posició 7. Així, el primer element és el número 3 i el darrer de la llista el número 1, aquests són a les posicions 0 i 7 respectivament. Té 8 elements.
Si volem fer la seva declaració ho podem fer amb el següent codi:
x=[3,8,7,0,5,5,2,1]
print(x)
#mostra per pantalla: [3, 8, 7, 0, 5, 5, 2, 1]
Mètodes, operar sobre llistes
x= list(38705521)
print(x)
#mostra per pantalla: ['3', '8', '7', '0', '5', '5', '2', '1']
Una llista pot contenir diferents tipus d’elements:
x=["som a la posició 0", 4, 2 , ["1",2], "som a la posició 4"]
print(x)
#mostra per pantalla: ['som a la posició 0', 4, 2, ['1', 2], 'som a la posició 4']
Accedir als elements
S’accedeix per posició
llista=[1,2.9,"Gimnèsia", [4,3],5]
print (llista[0]) # 1
print (llista[1]) # 2.9
print (llista[2]) # Gimnèsia
print (llista[3]) # [4,3]
print (llista[3][0]) # 4
print (llista[3][1]) # 3
print (llista[1:3]) # [2.9, 'Gimnèsia']
print (llista[1:6]) # [2.9,"Gimnèsia", [4,3],5]
print (llista[1:6:2]) # [2.9, [4, 3]]
Mètodes, operar sobre llistes
Els mètodes ens permeten operar sobre els objectes, en aquest cas exploram alguns mètodes que es poden usar sobre una llista en python.
- append(): afegeix al final de la llista
- clear(): buida una llista
- extend(): uneix dues llistes
- count(a): conta les vegades que apareix l’element a dins una llista
- index(a): torna, si existeix, la posició on es troba l’element a.
- insert(p,a): insereix l’element ‘a’ a la posició ‘p’. (
- len(): retorna la longitud de la llista.
- pop(): Treu el darrer ítem de la llista i el borra. Es pot especificar posició.
- remove(a): Borra el primer ítem que concordi amb ‘a’
- reverse(): dona la volta a la llista actual
- sort(): ordena de menor a major. Sobre llistes del mateix tipus.
#EXEMPLES AMB ELS MÈTODES LLISTA.
llista=[1,2.9,"Gimnèsia", [4,1],5,5]
#APPEND
llista.append("afegim item")
print("- Metode append:", llista)
#COUNT
n=llista.count(1)
print("- Mètode count: El nombre 1 surt ", n , " vegades")
n=llista.count(5)
print("- Mètode count: El nombre 5 surt ", n , " vegades")
#INDEX
posicio=llista.index(5)
print("- Mètode index: L'element 5 es troba a la posició", posicio)
#INSERT
llista.insert(3,"som item nou")
print("- Mètode insert:", llista)
#LEN
print("- Mètode len: la longitud de la llista és", len(llista))
#POP
llista.pop()
print("- Mètode pop: La llista ara és:", llista)
#REMOVE
llista.remove(2.9)
print("- Mètode remove: La llista ara és:", llista)
#REVERSE
llista.reverse()
print("- Mètode reverse: llista girada: ", llista)
#SORT
llistaInt=[3,4,2,8,6,5,4,3]
llistaInt.sort()
print("- Mètode sort: llista ordenada", llistaInt)
!!!SORTIDA
- Metode append: [1, 2.9, 'Gimnèsia', [4, 1], 5, 5, 'afegim item']
- Mètode count: El nombre 1 surt 1 vegades
- Mètode count: El nombre 5 surt 2 vegades
- Mètode index: L'element 5 es troba a la posició 4
- Mètode insert: [1, 2.9, 'Gimnèsia', 'som item nou', [4, 1], 5, 5, 'afegim item']
- Mètode len: la longitud de la llista és 8
- Mètode pop: La llista ara és: [1, 2.9, 'Gimnèsia', 'som item nou', [4, 1], 5, 5]
- Mètode remove: La llista ara és: [1, 'Gimnèsia', 'som item nou', [4, 1], 5, 5]
- Mètode reverse: llista girada: [5, 5, [4, 1], 'som item nou', 'Gimnèsia', 1]
- Mètode sort: llista ordenada [2, 3, 3, 4, 4, 5, 6, 8]
!!!
Accedir a una llista
Per accedir a una llista disposarem de vàries formes, cada una serà útil per alguna solució. Amb el bucle for in podem obtenir el contingut de la posició i la posició.
Al codi següent s’expliquen diferents formes de recórrer una llista:
#PODEM ACCEDIR ALS SEUS ELEMENTS
llista=[1,3,4,5,4]
for item in llista:
print(item)
#PODEM ACCEDIR USANT LA SEVA POSICIÓ. AMB RANGE()
for i in range(len(llista)):
print(llista[i])
#SORTIDA DELS DOS CODIS
1
3
4
5
4
Exemples pràctics
En aquest apartat mostram varis exemples per veure l’aplicació pràctica d’aquest element.
- Una aplicació de seguretat controlaMaquina reb una llistes de valors que indiquen les temperatures d’una màquina.
A cada rebuda de dades l’aplicació ha de imprimir el valor màxim i el mínim. També ha d’imprimir el nombre de vegades que ha superat el valor 3 (sols una vegada superat i desprès baixa i el torna superar, són dos pics).
Exemples de valors:
- Entrada de valors: [1,2,4,4,5,6,7,1,2,5]
- Sortida de valors: “màxim: 7, mínim: 1, variat: 2
- Entrada de valors: [1,4,1,4,1,4]
- Sortida de valors: “màxim: 4, mínim: 1, variat: 3
- Volem saber si una paraula és capicua:
- entrada: “capicua”, sortida: no és capicua
- entrada: “anna”, sortida: és capicua.
- Volem calcular el total de una comanda d’articles. La llista durà el preu, quantitat i, si n’hi ha, descompte de cada item.
- entrada: [[2,3.5],[4,12.1],[1,3.5]]
- sortida: 48.9
- entrada: [[2,3.5,10],[4,12.1],[1,3.5]]
- sortida: 48.2
- Càlcul de la mitjana de una llista
Exercicis
#1.Executa i comenta el comportament del següent codi
llista = [5, 2, 6, 8, 101]
print(llista[0])
print(llista[4])
print(llista[5])
#2. Què imprimeix el següent codi?
llista = [5, 2, 6, 8, 101]
for item in llista:
print(item)
#3. Que fa el següent codi?
llista = [5, 2, 6, 8, 101]
for item in llista:
if item % 2 == 0:
print(item)
#4. Què fa el següent codi?
llista=[5]
for i in range(5):
llista.append(i)
print(llista)
#5. Comprova el que fa el següent codi:
print(len("Bon dia"))
print(len("Bon") + len("dia"))
print(len("2"))
print(len(2))
#6. Què imprimeix el següent codi?
print("Les illes" + "Gimnèsises")
print("Gimnèsies" + "Pitiuses"[0])
print(("Gimnèsies" + "Pitiuses")[0])
#7. Què imprimeix el següent codi:
paraula="Som una paraula"
for lletra in paraula:
print(lletra)
print("Per acabar, imprimim la quarta posició: ", paraula[4])
print("Per acabar, imprimim i la sexta posició: ", paraula[6])
#8 Què imprimeix el següent codi?
s = "0123456789"
print(s[1])
print(s[:3])
print(s[3:])
Exercicis per entregar
Fes dos dels exercicis pràctics.