Iteración sobre iterables (2)
Una de las cosas que has aprendido en este capítulo es que no todos los iterables son listas reales. Un par de ejemplos que hemos visto son las cadenas y el uso de la función range()
. En este ejercicio, nos centraremos en la función range()
.
Puedes utilizar range()
en un bucle for
como si fuera una lista en la que iterar:
for i in range(5):
print(i)
Recuerda que range()
no crea realmente la lista, sino un objeto range con un iterador que produce los valores hasta que alcanza el límite (en el ejemplo, hasta el valor 4). Si range()
ha creado la lista real, llamarla con un valor de \(10^{100}\) puede no funcionar, sobre todo porque un número tan grande como ese puede sobrepasar la memoria de un ordenador normal. El valor \(10^{100}\) es en realidad lo que se llama un gúgol, que es un 1 seguido de cien ceros. ¡Es un número enorme!
Tu tarea para este ejercicio es demostrar que llamar a range()
con \(10^{100}\) no precrea realmente la lista.
Este ejercicio forma parte del curso
Caja de herramientas Python
Instrucciones de ejercicio
- Crea un objeto iterador
small_value
sobrerange(3)
utilizando la funcióniter()
. - Utilizando un bucle
for
, itera sobrerange(3)
, imprimiendo el valor de cada iteración. Utilizanum
como variable de bucle. - Crea un objeto iterador
googol
sobrerange(10 ** 100)
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Create an iterator for range(3): small_value
small_value = ____
# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))
# Loop over range(3) and print the values
# Create an iterator for range(10 ** 100): googol
googol = ____
# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))