Métodos iteradores
Cada objeto iterador contiene los siguientes dos métodos.
Este método se utiliza para inicializar el objeto Iterable. El objeto devuelto tiene el método '_ _próximo_ _()'En Python 3.
Este método devuelve el siguiente valor del objeto iterable. La relación entre el iterador y el objeto iterable se muestra en el siguiente diagrama.
Iterando con bucles
Se mencionó anteriormente que el 'para'Loop llama al'próximo()'Método implícitamente al iterar cualquier objeto iterable. Cuando se usa un bucle para iterar un objeto iterable, el 'para'Loop llama al'próximo()'Método implícitamente y el'mientras'Loop llama al'próximo()' o '__próximo__()'Método explícitamente para leer el siguiente valor del objeto Iterable. Ambos tipos de bucle continúan llamando a este método hasta el 'Stopiteración'Se genera la señal.
Ejemplo 1: iterando iterable objetos con el bucle 'para'
El siguiente script muestra el uso de 'para'bucles para iterar cinco objetos iterables diferentes. La primera 'para'Loop se usa para iterar el valor de la cadena e imprimir cada carácter de la cadena en cada iteración. El segundo 'para'Loop se usa para iterar el contenido de un archivo de texto existente e imprimir cada línea del archivo en cada iteración. El tercero 'para'El bucle se usa para iterar los valores de una tupla. El cuarto 'para'Loop se usa para iterar los valores contenidos en una lista. El quinto 'para'Loop se usa para iterar los valores contenidos en un diccionario.
# Iterando una cadena usando para bucleProducción
La siguiente salida muestra que los caracteres del valor de la cadena; las líneas del prueba.TXT archivo; y los elementos de las tuplas, la lista y el diccionario se imprimen después de ejecutar el script.
Ejemplo 2: iterando listas con el bucle 'While'
El siguiente script muestra el uso de A 'mientras'bucle para iterar una lista de datos. Aquí el 'iter ()'El método se usa para inicializar el objeto Iterable y el' 'próximo()'El método se usa para leer el siguiente valor del objeto Itererable. Stopiteración la señal se usa para terminar desde el infinito 'mientras' bucle cuando no queda ningún elemento de la lista para leer.
# Defina una listaProducción
La siguiente salida muestra que cada valor de la lista se ha imprimido en cada línea utilizando el 'próximo()'Método después de ejecutar el script.
Ejemplo 3: iterando una tupla con el método '__next __ ()' y 'while' bucle
En el siguiente script, ambos 'próximo()' y '__próximo__()'Los métodos se utilizan para iterar los valores de una tupla. El 'iter ()'El método se usa para crear el objeto Iterable, llamado'init_iter.' Aquí el 'próximo()'El método se llama dos veces para imprimir los dos primeros valores de la tupla. A continuación, un infinito 'mientras'Loop se usa para iterar los valores restantes de la tupla y el'Stopiteración'La señal se usa para terminar desde el bucle, como en el ejemplo anterior.
# Defina una tuplaProducción
La siguiente salida muestra que después de ejecutar el script, los dos primeros valores ','Pájaro' y 'León,'se imprimen con el'próximo()'Método, mientras que los otros tres valores', 'Mono,"Serpiente,' y 'Elefante,'se imprimen con el'__próximo__()' método.
Iterando con un iterador personalizado
Esta sección muestra cómo se pueden implementar diferentes tipos de iteradores personalizados mediante la creación de clases. Ambos '__iter __ ()' y el '__próximo__()'Los métodos se implementarán en una clase y el'mientras'El bucle se usará para iterar los valores del objeto Iterable. La siguiente parte de este artículo también mostrará cómo crear un iterador personalizado infinito y controlar la iteración.
Ejemplo 4: Uso de un iterador personalizado simple
El siguiente script le permite calcular el valor de Xnorte mediante el uso de un iterador personalizado sin usar ninguna función incorporada de Python. La clase llamada 'x_to_the_power_n'se declara en el guión. El '__en eso__()'El método de la clase inicializará los valores de X y norte que se utilizará en el momento de la creación de objetos. El '__iter __ ()'El método inicializará la variable de clase, que almacenará el'resultado'Variable del cálculo en cada iteración. Los valores de X y norte se tomará como entrada del usuario. Un objeto de la clase 'números'se crea con X y norte. A continuación, un objeto iterable llamado 'iter_obj'se crea para llamar al'__próximo__()' método para N-1 veces usando el 'mientras'bucle para calcular el valor de Xnorte. En cada iteración, el valor de X se multiplicará por el valor anterior del 'resultado' variable. Después de terminar el 'mientras'Loop, el'__próximo__()'Se llamará a los métodos nuevamente para imprimir el valor de Xnorte.
"Cree una clase para calcular elProducción
La siguiente salida muestra que 2 se toma como el valor de X y 4 se toma como el valor de norte. Entonces, el script calculó el valor de 24 ser dieciséis.
Ejemplo 5: Uso de un iterador personalizado infinito
El siguiente script imprimirá continuamente los números que son divisibles por 5 con un retraso de un segundo hasta que el usuario presione Ctrl + C para generar el 'Keyboardinterrum'señal. El infinito 'mientras'Loop se usa aquí para crear un iterador personalizado infinito. El 'tiempo'El módulo se importa al comienzo del script para usar el'dormir()'Método para retrasar cada salida por un segundo. El número 5 se inicializa al 'numer'Variable como el primer número divisible en el script, y el siguiente número se genera agregando 5 con el valor anterior del'numer' variable.
# Módulo de tiempo de importaciónProducción
La siguiente salida muestra que el número comenzó a imprimir desde 5 e imprimió continuamente los siguientes números uno tras otro con una duración de un segundo. Cuando el usuario presionó Ctrl + C Después de imprimir el número 60, el mensaje 'Se presiona Ctrl+C.'fue impreso, antes de terminar el guión.
Ejemplo 6: controlar un iterador infinito personalizado
El siguiente script muestra cómo detener el iterador infinito personalizado después de completar un número especificado de iteraciones. El '__iter __ ()'El método de la clase inicializará los valores de'norte' y 'resultado'Variables de clase. El script calculará los cuadrados de los números, comenzando desde 1, que se almacenan en la variable norte, e imprima el valor cuadrado de norte hasta que el valor de norte es mayor que 5. Un infinito mientras el bucle se declara aquí para llamar al '__próximo__()'Método para imprimir el valor cuadrado de norte. Cuando el valor de norte alcance 6, el 'Stopiteración'La señal se generará para terminar el bucle.
# Módulo de tiempo de importaciónProducción
La siguiente salida muestra que el iterador personalizado infinito se terminó cuando el valor de n se volvió mayor que 5. El script calculó e imprimió los valores cuadrados de los valores de número de 1 a 5.
Iterando con Itertools
Python tiene un módulo incorporado llamado 'Itertools'que se puede usar para crear un iterador para iterar datos utilizando un bucle. La siguiente sección de este artículo muestra cómo usar tres funciones en este módulo.
Itertools.contar()
El 'ITERTOOLS.contener'La función se puede usar con el'mapa()'Método para generar datos secuenciales y con el'cremallera()'Método para agregar secuencias utilizando el parámetro de recuento de este método. La sintaxis de esta función se da a continuación.
Sintaxis
Itertools.contar (inicio = 0, paso = 1)Aquí, el primer parámetro ','comenzar,'se usa para definir el valor inicial de la secuencia, y 0 es el valor predeterminado de este parámetro. El segundo parámetro ','paso,'se usa para establecer la diferencia entre los números consecutivos y 1 es el valor predeterminado de este parámetro.
Ejemplo 7: Uso de la función Count () de IterTools
El siguiente script calculará la suma de 0 a norte números, donde el valor de norte será tomado del usuario. El 'contar()'La función se importa de'Itertools'Al comienzo del guión. El 'my_iterator'El objeto se inicializa con el'contar()'función, con un'comenzar'Valor de 0 y A'paso'Valor de 1. A continuación, el 'sum_result'La variable se inicializa mediante el primer valor del objeto iterable. El valor inicial se inicializa a la variable i y el número de inicio se almacena como el carácter de la variable, números que se utilizarán para combinar otros números en cada iteración. Los valores de los números secuenciales se agregarán en cada iteración cuando el 'próximo()se llama al método. Cuando el valor de i se vuelve mayor que norte, El script terminará mostrando el resultado de la suma.
"El siguiente script calcularáProducción
La siguiente salida muestra que el número 10 se toma como la entrada utilizada para terminar el bucle después de ejecutar el script. En esta salida, el script ha calculado la suma de 0 a 10 e imprimió la salida, 0+1+2+3+4+5+6+7+8+9+10 = 55.
Itertools.ciclo()
Esta función contiene solo un argumento, que puede ser cualquier objeto. El propósito de esta función es repetir los valores del objeto después de completar la iteración de todos los valores. Aquí, cadenas, tuplas, listas, etc. se puede usar como objeto. Los retornos de objeto iterables de esta función se utilizan para iterar cada valor del objeto que se utilizará como un argumento utilizando el 'próximo()' método. El número de veces los valores del objeto Iterer se basarán en el número de iteraciones del bucle. La sintaxis de esta función se da a continuación.
Sintaxis
Itertools.ciclo (objeto)Ejemplo 8: Uso de la función de ciclo () de IterTools
El 'aleatorio' y 'Itertools'Los módulos se importan al comienzo del script para generar un número aleatorio y usar el'ciclo()'función de'Itertools'Módulo para repetir los datos. Se utiliza una lista de tres números aleatorios como argumento del 'ciclo()' función. El objeto iterable llamado 'num_list'se inicializa mediante el valor de retorno de esta función. El 'contar'La variable se inicializa a 0, y cuando el valor de esta variable se vuelve 6, el 'mientras'Loop finalizará. Entonces el 'mientras'Loop iterará seis veces, y cada valor de la lista se repetirá solo una vez.
# Importar módulo aleatorioProducción
La siguiente salida muestra que tres números aleatorios, 3, 17, y 185, han sido generados como elementos de la lista. El bucle se itera seis veces, y estos tres valores se repiten para las siguientes iteraciones.
Itertools.repetir()
La función 'repetir ()' funciona como un iterador infinito y puede tomar dos argumentos. Cuando se omite el segundo argumento, la función 'repetir ()' funciona como un iterador infinito y repite el valor un número infinito de veces. Esta función no ocupa la memoria para cada repetición. Simplemente crea la variable una vez en la memoria y repite la misma variable un número infinito de veces cuando solo se establece un argumento para esta función. La sintaxis de esta función se da a continuación.
Sintaxis
Itertools.Repita (valor, límite)El primer argumento se usa para tomar el valor que se repetirá. El segundo argumento es opcional y se usa para establecer el límite de repeticiones.
Ejemplo 9: Uso de la función repetir () del módulo ITerTools
El 'Itertools'El módulo se importa al comienzo del script para usar el'repetir()' función. Se tomará un valor de cadena del usuario para repetir, y se tomará un valor de número del usuario para establecer el límite de repetición. El valor de retorno del 'repetir()'La función se convertirá en una lista con el'lista()'Método y almacenado en el'datos de listas' variable. Los valores del 'datos de listas'se imprimirá con el'para' bucle.
# Importar módulo ITerToolsProducción
La siguiente salida muestra que 'Pitón'se toma como el valor de la cadena, y 3 se toma como el número utilizado para repetir el valor de la cadena después de ejecutar el script. La salida muestra que la cadena 'Pitón'se repite tres veces.
Conclusión
El concepto de iterador y los usos de diferentes tipos de iteradores en Python se intentan explicar con los ejemplos muy simples en este artículo. Los usuarios de Python pueden usar un iterador incorporado o pueden crear su iterador personalizado según el requisito. Este artículo ayudará a los usuarios de Python a conocer los métodos utilizados en el iterador y cómo funcionan estos métodos con cualquier bucle para leer cualquier objeto ITerable. Algunos usos de Itertools El módulo de Python también se explican en este artículo para conocer más detalles del iterador en Python.