Python – Itertools.ciclo()

El iterador se define como tipos de objetos que contienen valores a los que se puede acceder o iterar mediante un bucle. Hay diferentes iteradores que vienen integrados con Python, como listas, conjuntos, etc. Itertools es el módulo de Python que contiene algunas funciones integradas para generar secuencias usando iteradores. Este módulo proporciona varias funciones que funcionan en iteradores para producir iteradores complejos. Este módulo funciona como una herramienta rápida y eficiente en memoria que se usa solo o en combinación para formar álgebra de iteración.

Hay diferentes tipos de iteradores.

  1. Iteradores infinitos:
  2. Este tipo de iteradores producen secuencias infinitas.

  3. Iteradores de secuencia corta:
  4. Estos iteradores producen las secuencias que terminan después de ciertas iteraciones.

  5. Funciones del generador de combinatoria:
  6. Estos generadores producen las secuencias en combinaciones relacionadas con los argumentos de entrada.

Itertools.ciclo()

  • La función toma solo un argumento como entrada, puede ser como una lista, una string, una tupla, etc.
  • La función devuelve el tipo de objeto iterador.
  • En la implementación de la función el tipo de retorno es yield el cual suspende la ejecución de la función sin destruir las variables locales. Es utilizado por los generadores que producen resultados intermedios.
  • Itera a través de cada elemento en el argumento de entrada y lo produce y repite el ciclo y produce una secuencia infinita del argumento

El programa de Python mencionado a continuación ilustra el funcionamiento de la función de ciclo. Toma el tipo de string como argumento y produce la secuencia infinita.

import itertools
  
  
# String for sequence generation
Inputstring ="Geeks"
  
# Calling the function Cycle from
# itertools and passing string as 
#an argument and the function returns
# the iterator object
StringBuffer = itertools.cycle(Inputstring)
SequenceRepeation = 0
SequenceStart = 0
SequenceEnd = len(Inputstring)
  
for output in StringBuffer:
    if(SequenceStart == 0):
        print("Sequence % d"%(SequenceRepeation + 1))
  
    # Cycle function iterates through each
    # element and produces the sequence 
    # and repeats it the sequence
    print(output, end =" ")
  
    # Checks the End of the Sequence according 
    # to the give input argument
    if(SequenceStart == SequenceEnd-1):
          
        if(SequenceRepeation>= 2):
            break
        else:
            SequenceRepeation+= 1
            SequenceStart = 0
            print("\n")
    else:
        SequenceStart+= 1

Producción:

Sequence  1
G e e k s 

Sequence  2
G e e k s 

Sequence  3
G e e k s

La función itertools.cycle también funciona con las listas de Python. El programa de Python mencionado a continuación ilustra el funcionamiento. Toma la lista de Python como argumento y produce la secuencia infinita.

import itertools
  
  
# List for sequence generation
Inputlist = [1, 2, 3]
  
# Calling the function Cycle from
# itertools and passing list as 
# an argument and the function 
# returns the iterator object
ListBuffer = itertools.cycle(Inputlist)
SequenceRepeation = 0
SequenceStart = 0
SequenceEnd = len(Inputlist)
  
for output in ListBuffer:
    if(SequenceStart == 0):
        print("Sequence % d"%(SequenceRepeation + 1))
  
    # Cycle function iterates through 
    # each element and produces the 
    # sequence and repeats it the sequence
    print(output, end =" ")
  
    # Checks the End of the Sequence according
    # to the give input argument
    if(SequenceStart == SequenceEnd-1):
          
        if(SequenceRepeation>= 2):
            break
        else:
            SequenceRepeation+= 1
            SequenceStart = 0
            print("\n")
    else:
        SequenceStart+= 1

Producción:

Sequence  1
1 2 3 

Sequence  2
1 2 3 

Sequence  3
1 2 3 

Publicación traducida automáticamente

Artículo escrito por Yelleti_Varshith y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *