MEJOR SITIO PARA DESARROLLADORES WEB

Python Tutorial

Python HOGAR Python Intro Python Empezar Python Sintaxis Python Comentarios Python Variables Python Tipos de datos Python Números Python Fundición Python Instrumentos de cuerda Python Booleanos Python Operadores Python Liza Python Tuplas Python Conjuntos Python Diccionarios Python If...Else Python While Bucles Python For Bucles Python Funciones Python Lambda Python Matrices Python Clases/Objetos Python Herencia Python Iteradores Python Polimorfismo Python Alcance Python Módulos Python Fechas Python Math Python JSON Python RegEx Python PIP Python Try...Except Python Entrada del usuario Python Formato de cadena

Manejo de archivos

Python Manejo de archivos Python Leer archivos Python Escribir/Crear Archivos Python Borrar archivos

Python Módulos

NumPy Tutorial Pandas Tutorial SciPy Tutorial Django Tutorial

Python Matplotlib

Matplotlib Intro Matplotlib Empezar Matplotlib Pyplot Matplotlib Graficado Matplotlib Marcadores Matplotlib Línea Matplotlib Etiquetas Matplotlib Red Matplotlib Subtramas Matplotlib Dispersión Matplotlib Barras Matplotlib Histogramas Matplotlib Gráficos circulares

Aprendizaje automático

Empezando Modo Mediana Media Desviación Estándar Percentil Distribución de datos Distribución normal de datos Gráfico de dispersión Regresión lineal Regresión polinómica Regresión múltiple Escala Entrenar/Prueba Árbol de decisión Matriz de confusión Agrupación jerárquica Regresión logística Búsqueda de cuadrícula Datos categóricos K-medias Agregación de arranque Validación cruzada AUC - ROC Curva K-vecinos más cercanos

Python MySQL

MySQL Empezar MySQL Crear base de datos MySQL Crear mesa MySQL Insertar MySQL Seleccionar MySQL Dónde MySQL Ordenar por MySQL Borrar MySQL Mesa plegable MySQL Actualizar MySQL Límite MySQL Unirse

Python MongoDB

MongoDB Empezar MongoDB Crear base de datos MongoDB Crear colección MongoDB Insertar MongoDB Encontrar MongoDB Consulta MongoDB Clasificar MongoDB Borrar MongoDB Colección de gotas MongoDB Actualizar MongoDB Límite

Python Referencia

Python Descripción general Python Funciones integradas Python Métodos de cadena Python Métodos de lista Python Métodos de diccionario Python Métodos de tupla Python Establecer métodos Python Métodos de archivo Python Palabras clave Python Excepciones Python Glosario

Referencia del módulo

Módulo aleatorio Módulo de Solicitudes Módulo de Estadísticas Módulo de Matemáticas cMath Módulo

Python Cómo

Eliminar lista duplicada Invertir una cadena Suma dos números

Python Ejemplos

Python Ejemplos Python Compilador Python Ejercicios Python Prueba Python Campo de entrenamiento Python Certificado

Python. Lecciones para principiantes

Ua En

Python Iteradores


Iteradores de Python

Un iterador es un objeto que contiene un número contable de valores.

Un iterador es un objeto sobre el que se puede iterar, lo que significa que se pueden recorrer todos los valores.

Técnicamente, en Python, un iterador es un objeto que implementa el protocolo del iterador, que consta de los métodos __iter__() and __next__().


Iterador vs Iterable

Las listas, tuplas, diccionarios y conjuntos son todos objetos iterables. Son contenedores iterables de los que puede obtener un iterador.

Todos estos objetos tienen un método iter() que se utiliza para obtener un iterador:

Ejemplo

Devuelve un iterador de una tupla e imprime cada valor:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))
Inténtalo tú mismo »

Incluso las cadenas son objetos iterables y pueden devolver un iterador:

Ejemplo

Las cadenas también son objetos iterables y contienen una secuencia de caracteres:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Inténtalo tú mismo »

Recorriendo un iterador

También podemos usar un bucle for para iterar a través de un objeto iterable:

Ejemplo

Iterar los valores de una tupla:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
Inténtalo tú mismo »

Ejemplo

Iterar los caracteres de una cadena:

mystr = "banana"

for x in mystr:
  print(x)
Inténtalo tú mismo »

El bucle for en realidad crea un objeto iterador y ejecuta el método next() para cada bucle.


Crear un iterador

Para crear un objeto/clase como iterador, debe implementar los métodos __iter__() y __next__() a tu objeto.

Como has aprendido en el capítulo Clases/Objetos de Python, todas las clases tienen una función llamada __init__(), que le permite realizar algunas inicializaciones cuando se crea el objeto.

El método __iter__() actúa de manera similar, puede realizar operaciones (inicialización, etc.), pero siempre debe devolver el objeto iterador en sí.

El método __next__() también le permite realizar operaciones y debe devolver el siguiente elemento de la secuencia.

Ejemplo

Cree un iterador que devuelva números, comenzando con 1, y cada secuencia aumentará en uno (devolviendo 1,2,3,4,5, etc.):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
Inténtalo tú mismo »

StopIteration / Detener iteración

El ejemplo anterior continuaría para siempre si tuviera suficientes declaraciones next() o si se usara en un bucle for.

Para evitar que la iteración continúe eternamente, podemos usar la instrucción StopIteration.

En el método __next__(), podemos agregar una condición de terminación para generar un error si la iteración se realiza un número específico de veces:

Ejemplo

Detener después de 20 iteraciones:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)
Inténtalo tú mismo »