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.
- __iter(iterable)__ método que se llama para la inicialización de un iterador. Esto devuelve un objeto iterador.
- 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