Iteradores en Python

El iterador en python es un objeto que se usa para iterar sobre objetos iterables como listas, tuplas, dictados y conjuntos. El objeto iterador se inicializa mediante el método iter() . Utiliza el método next() para la iteración.
 

  1. __iter(iterable)__ método que se llama para la inicialización de un iterador. Esto devuelve un objeto iterador.
  2. next ( __next__ en Python 3) El método next devuelve el siguiente valor para el iterable. Cuando usamos un bucle for para atravesar cualquier objeto iterable, internamente usa el método iter() para obtener un objeto iterador que además usa el método next() para iterar. Este método genera una StopIteration para señalar el final de la iteración.

Cómo funciona realmente un iterador en python
 

Python3

# Here is an example of a python inbuilt iterator
# value can be anything which can be iterate
iterable_value = 'Geeks'
iterable_obj = iter(iterable_value)
 
while True:
    try:
 
        # Iterate by calling next
        item = next(iterable_obj)
        print(item)
    except StopIteration:
 
        # exception will happen when iteration will over
        break

Producción : 

G                                                                                                                                                                            
e                                                                                                                                                                            
e                                                                                                                                                                            
k                                                                                                                                                                            
s


A continuación se muestra un iterador personalizado de Python simple que crea un tipo de iterador que itera desde 10 hasta un límite determinado. Por ejemplo, si el límite es 15, entonces imprime 10 11 12 13 14 15. Y si el límite es 5, entonces no imprime nada.
 

Python3

# A simple Python program to demonstrate
# working of iterators using an example type
# that iterates from 10 to given value
 
# An iterable user defined type
class Test:
 
    # Constructor
    def __init__(self, limit):
        self.limit = limit
 
    # Creates iterator object
    # Called when iteration is initialized
    def __iter__(self):
        self.x = 10
        return self
 
    # To move to next element. In Python 3,
    # we should replace next with __next__
    def __next__(self):
 
        # Store current value ofx
        x = self.x
 
        # Stop iteration if limit is reached
        if x > self.limit:
            raise StopIteration
 
        # Else increment and return old value
        self.x = x + 1;
        return x
 
# Prints numbers from 10 to 15
for i in Test(15):
    print(i)
 
# Prints nothing
for i in Test(5):
    print(i)

Producción : 

10
11
12
13
14
15


En las siguientes iteraciones, el bucle for está internamente (no podemos verlo) usando el objeto iterador para atravesar los iterables 
 

Python3

# Sample built-in iterators
 
# Iterating over a list
print("List Iteration")
l = ["geeks", "for", "geeks"]
for i in l:
    print(i)
     
# Iterating over a tuple (immutable)
print("\nTuple Iteration")
t = ("geeks", "for", "geeks")
for i in t:
    print(i)
     
# Iterating over a String
print("\nString Iteration")   
s = "Geeks"
for i in s :
    print(i)
     
# Iterating over dictionary
print("\nDictionary Iteration")  
d = dict()
d['xyz'] = 123
d['abc'] = 345
for i in d :
    print("%s  %d" %(i, d[i]))

Producción : 

List Iteration
geeks
for
geeks

Tuple Iteration
geeks
for
geeks

String Iteration
G
e
e
k
s

Dictionary Iteration
xyz  123
abc  345


Generadores en Python
Este artículo es una contribución de Shwetanshu Rohatgi . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *