Tutorial de Python

Pitón INICIO Introducción a Python Python Empezar Sintaxis de Python Comentarios de Python Variables de Python Tipos de datos de Python Números de Python Fundición de Python Cadenas de pitón Booleanos de Python Operadores de Python Listas de Python Tuplas de Python Conjuntos de Python Diccionarios de Python Python si... si no Ciclos while de Python Python para bucles Funciones de Python pitón lambda Matrices de Python Clases/Objetos de Python Herencia de Python Iteradores de Python Alcance de Python Módulos de Python Fechas de Python Python Matemáticas PythonJSON Python expresión regular PIP de Python Prueba Python... Excepto Entrada de usuario de Python Formato de cadenas de Python

Manejo de archivos

Manejo de archivos de Python Python Leer archivos Python escribir/crear archivos Python Eliminar archivos

Módulos de Python

Tutorial NumPy Pandas Tutorial SciPy Tutorial

Matplotlib de Python

Introducción a Matplotlib Matplotlib Comenzar Pyplot de Matplotlib Trazado de Matplotlib Marcadores Matplotlib Línea Matplotlib Etiquetas Matplotlib Cuadrícula Matplotlib Subparcelas de Matplotlib Dispersión de Matplotlib Barras Matplotlib Histogramas de Matplotlib Gráficos circulares de Matplotlib

Aprendizaje automático

Empezando Media Mediana Moda Desviación Estándar percentil Distribución de datos Distribución normal de datos Gráfico de dispersión Regresión lineal Regresión polinomial Regresión múltiple Escala Entrenar/Prueba Árbol de decisión

pitón mysql

MySQL Empezar Crear base de datos MySQL Crear tabla MySQL Insertar MySQL Seleccionar MySQL mysql donde MySQL Ordenar por MySQL Eliminar Tabla desplegable de MySQL Actualización de MySQL Límite MySQL unirse a mysql

Python MongoDB

MongoDB Empezar MongoDB Crear base de datos MongoDB Crear colección Insertar MongoDB MongoDB Buscar Consulta MongoDB MongoDB Ordenar Eliminar MongoDB Colección de eliminación de MongoDB Actualización de MongoDB Límite de MongoDB

Referencia de Python

Descripción general de Python Funciones integradas de Python Métodos de cadenas de Python Métodos de lista de Python Métodos de diccionario de Python Métodos de tupla de Python Métodos de conjuntos de Python Métodos de archivos de Python Palabras clave de Python Excepciones de Python Glosario de Python

Referencia del módulo

Módulo aleatorio Módulo de Solicitudes Módulo de estadísticas Módulo Matemático cMódulo Matemático

Python Cómo

Eliminar duplicados de lista Invertir una cadena Añadir dos números

Ejemplos de Python

Ejemplos de Python Compilador de Python Ejercicios de pitón Cuestionario de Python Certificado de Python

Iteradores de Python


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 puede 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__() y __next__().


Iterador vs Iterable

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

Todos estos objetos tienen un iter()método 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))

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

Ejemplo

Las cadenas también son objetos iterables, que 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))

Bucle a través de un iterador

También podemos usar un forbucle 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)

Ejemplo

Iterar los caracteres de una cadena:

mystr = "banana"

for x in mystr:
  print(x)

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



Crear un iterador

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

Como aprendió 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 __iter__()método actúa de manera similar, puede realizar operaciones (inicialización, etc.), pero siempre debe devolver el objeto iterador en sí.

El __next__()método 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))

Detener iteración

El ejemplo anterior continuaría para siempre si tuviera suficientes instrucciones next(), o si se usara en un forbucle.

Para evitar que la iteración continúe para siempre, podemos usar la StopIterationdeclaración.

En el __next__()método, podemos agregar una condición de terminación para generar un error si la iteración se realiza una cantidad específica 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)