27. list iteration¶
Iterating a list means going through each of the elements in the list one by one to perform some action on each element. This technique allows you to manipulate data repetitively without having to write the code multiple times.
Lists can be iterated with a for
loop.
Example:
lista = ['Juan', 'Nerea', 'Camila', 'Esteban']
for nombre in lista:
print(f'Hola {nombre}')
Exit:
Hola Juan
Hola Nerea
Hola Camila
Hola Esteban
len()
function¶
The len()
function returns the number of elements that a list contains. This is useful for iterating over the index that each element is at:
>>> 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
list()
function¶
The list()
function allows you to create a list from multiple elements or convert an iterable like range()
to a list:
>>> 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']
list comprehension¶
List comprehension is a short and fast method of generating lists. Use the for
loop inside two [ ]
brackets
Example:
lista = [num for num in range(10)]
It is equivalent to this other code, slower and longer to write:
lista = []
for num in range(10):
lista.append(num)
Exercises¶
Write a program that defines a list of names and then prints the name and the letter it starts with on the screen in the following format:
Juan comienza por 'J' Nerea comienza por 'N' Camila comienza por 'C' Esteban comienza por 'E'
Write a program that requests a phrase for keyboard input. The program must convert the phrase to a list of characters.
The program should then print the sentence backwards, starting with the last letter and ending with the first letter.
Hint: To go from end to beginning, you can use an index with the function
for i in range(len(list)-1, -1, -1):
.Write a program that generates a list of odd numbers up to 99. The program should add all the numbers in the list and print the result, which should equal 2500.
Write a program that defines the following list of elements:
lista_1 = [1, 2, 2, 3, 4, 4, 5, 5, 5, 7]
The program should generate a new list that contains all the elements of the first one except those that are duplicates:
lista_2 = [1, 2, 3, 4, 5, 7]
Hint: loop through all the elements in list_1 and if they are not in list_2, add them to list_2.
Write a program that reads a sentence from the keyboard and encrypts it with the following algorithm.
The program must split the phrase into letters with the
list(phrase)
function.Next the program should generate a new list with the letters with even index.
The letters with odd index must be added to this new list at the end.
Finally all the letters of the new list will be printed together.
Exit:
Introduce una frase: La lluvia en Sevilla es una pura maravilla L lvae eil suapr aailalui nSvlae n uamrvla
Exit:
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
Exit:
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
Write a program that breaks the code produced by the above program.
Clue:
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 ...