27. Iteració de llistes¶
Iterar una llista significa viatjar cadascun dels elements de la llista un per un per realitzar alguna acció amb cada element. Aquesta tècnica us permet manipular de forma repetitiva les dades sense haver d’escriure el codi diverses vegades.
Les llistes poden beepo amb un bucle `` per ''.
Exemple
lista = ['Juan', 'Nerea', 'Camila', 'Esteban']
for nombre in lista:
print(f'Hola {nombre}')
Sortida
Hola Juan
Hola Nerea
Hola Camila
Hola Esteban
Funció `` len ()`¶
La funció `` len () retorna el nombre d'elements que conté una llista. És útil per a iteracions amb l’índex ** ** en què es troba cada element
>>> lista = ['A', 'B', 'C', 'D', 'E', 'F']
>>> len(lista)
6
>>> for i in range(len(lista)):
... if i % 2 == 0:
... print(f'{lista[i]}')
...
A
C
E
>>> for i in range(len(lista)):
... if i % 2 != 0:
... print(f'{lista[i]}')
...
B
D
F
`` Llista () ```¶
La `` llista () `` us permet crear una llista de diversos elements o convertir un iterable com a ' Rage () `` en una llista
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11, 2)) # Impares
[1, 3, 5, 7, 9]
>>> list('Hola, mundo')
['H', 'o', 'l', 'a', ',', ' ', 'm', 'u', 'n', 'd', 'o']
Enumereu la comprensió¶
La comprensió de la llista és un mètode breu i ràpid de generar llistes. Utilitzeu el bucle `` `` dins de dos claudàtors `` [] `` `
Exemple
lista = [num for num in range(10)]
És equivalent a aquest altre codi, més lent i llarg per escriure
lista = []
for num in range(10):
lista.append(num)
Exercicis¶
Escriviu un programa que defineixi una llista de noms i després s’imprimeixi a la pantalla el nom i les lletres pel qual comença amb el format següent
Juan comienza por 'J' Nerea comienza por 'N' Camila comienza por 'C' Esteban comienza por 'E'
Escriviu un programa que demani una frase per a l’entrada del teclat. El programa ha de convertir la frase en una llista de personatges.
Aleshores, el programa ha d’imprimir la frase cap enrere, a partir de l’última lletra i acabant per a la primera lletra.
Pista: anar del final al començament, es pot utilitzar un índex amb el `` per a la gamma (len (llista) -1, -1, -1): ``.
Escriviu un programa que generi una llista de números imparells fins al 99. El programa ha d’afegir tots els números a la llista i imprimir el resultat, que ha de ser igual a 2500.
Escriviu un programa que defineixi la llista següent d’elements
lista_1 = [1, 2, 2, 3, 4, 4, 5, 5, 5, 7]
El programa ha de generar una nova llista que contingui tots els elements del primer, excepte els que es dupliquen
lista_2 = [1, 2, 3, 4, 5, 7]
Pista: recorre tots els elements de la llista_1 i si no són a la llista_2, els afegiu a la llista_2.
Escriviu un programa que llegeixi una frase del teclat i del kifre amb l'algoritme següent.
El programa ha de dividir la frase en lletres amb la `` llista (frase) ``.
A continuació, el programa ha de generar una nova llista amb les lletres amb un par.
A aquesta llista nova, les lletres amb un índex estrany s’han d’afegir al final.
Finalment, s’imprimiran totes les cartes de la nova llista.
Sortida
Introduce una frase: La lluvia en Sevilla es una pura maravilla L lvae eil suapr aailalui nSvlae n uamrvla
Sortida
Introduce una frase: En un lugar de la Mancha, de cuyo nombre no quiero acordarme E nlgrd aMnh,d uonmr oqir cramnu ua el aca ecy oben ueoaodre
Sortida
Introduce una frase: Si eres capaz de descifrar esto, es que eres un/a crack S rscpzd ecfa so sqeee nacakiee aa edsirret,e u rsu/ rc
Escriviu un programa que desxifiqui el codi produït pel programa anterior.
Pista
frase = input('Escribe la frase cifrada: ') # Para evitar errores debe haber un número par de caracteres if len(frase) % 2 != 0: frase = frase + ' ' # Genera dos listas con los caracteres de índice par # y los caracteres de índice impar lista_cifrada = list(frase) lista_cifrada_par = lista_cifrada[ : len(frase)//2] lista_cifrada_impar = lista_cifrada[len(frase)//2 : ] # Genera una lista descifrada vacía lista_descifrada = [''] * len(frase) # Reparte los caracteres pares for i in range(len(lista_cifrada_par)): lista_descifrada[i*2] = lista_cifrada_par[i] # Reparte los caracteres impares for ... # Imprime el resultado for ...