Bucles for¶
Sentencia for¶
Imaginemos una colección cualquiera, una lista, una tupla, o una cadena de caracteres. Podemos recorrerla elemento a elemento mediante:
| RecorrerLista.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Lo que muestra:
Ana
Juan
Andrés
Victor
Luisa
Cristina
Como alternativa a una sentencia while, tenemos la sentencia for:
| RecorrerLista2.py | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
La sentencia for recorre una colección, controlando internamente su tamaño
sin que tengamos que preocuparnos por ello. Para cada elemento, lo copia en
una variable de trabajo (en este caso, persona).
Nótese que en el bloque interno no tenemos acceso a la colección, sino a la copia del elemento de turno.
Iteradores e Iterables¶
Un iterable es un objeto que se puede recorrer con un mecanismo for o similar,
para obtener elementos. Las listas, tuplas, o cadenas de texto, son iterables.
Un iterador es un mecanismo que genera elementos a medida que se le va preguntando. Por ejemplo:
| Range | |
|---|---|
1 2 3 | |
Muestra:
1
2
3
4
5
6
7
8
9
La función range(a,b) crea un objeto que, al ser recorrido, genera valores
entre a y b-1 (el valor b quedará excluido de la secuencia).
Ver la diferencia entre:
numeros1 = [1,2,3,4,5,6,7,8,9]
numeros2 = range(1,10)
Aparentemente son similares, pero la primera crea una lista, almacenando los valores en la memoria. La segunda crea una lista virtual. Los valores se van generando uno a uno a medida que se van necesitando, y se suprimen para hacer espacio al siguiente.
Podemos crear listas o tuplas a partir de un iterador mediante:
| Range2 | |
|---|---|
1 2 3 4 5 6 7 | |
Lo que muestra:
range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
(1, 2, 3, 4, 5, 6, 7, 8, 9)
En el primer caso, tenemos un iterador, no una colección de datos. En el segundo, una lista entre corchetes, y en el tercero, una tupla.