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

  1. 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'
    
  2. 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): ``.

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

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

  5. 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
    
  6. 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 ...