# Crear una lista
= [1, 2, 3, 4]
lista
# Obtener el iterador de la lista
= iter(lista)
iterador
# Usar el iterador para obtener elementos
print(next(iterador)) # Imprime: 1
print(next(iterador)) # Imprime: 2
print(next(iterador)) # Imprime: 3
print(next(iterador)) # Imprime: 4
10 Iteradores y generadores
Trabajar con iteradores y generadores en Python permite manejar grandes cantidades de datos de manera eficiente, sin necesidad de cargar todo en memoria.
Un iterador es un objeto que produce una secuencia de valores uno a uno, bajo demanda, implementando dos métodos clave:
__iter__()
que devuelve el propio iterador.__next__()
que devuelve el siguiente valor; cuando se agotan los elementos lanza la excepción StopIteration.
Todos los iteradores son iterables, pero no todos los iterables son iteradores hasta que se les aplica iter().
Ejemplo:
Los iteradores también pueden recorrer cadenas de texto.
= "Hola mundo!"
text = iter(text)
text_iter
for i in text_iter:
print(i)
H
o
l
a
m
u
n
d
o
!
10.1 ¿Qué es un generador y cómo se utiliza?
Un generador en Python es una función que, en lugar de devolver todos sus resultados de golpe con return
, utiliza la palabra clave yield
para ir “produciendo” valores uno a uno y de forma perezosa (lazy), es decir, solo cuando el código que lo consume los solicita.
def mi_generador():
yield 1
yield 2
yield 3
# Usar el generador
for valor in mi_generador():
print(valor)
1
2
3
Ejemplo con serie Fibonacci
def fibonacci(limite):
= 0, 1
a, b while a < limite:
yield a
= b, a + b
a, b
# Usar el generador para la serie de Fibonacci hasta 10
for numero in fibonacci(10):
print(numero)
0
1
1
2
3
5
8