Python | Diferencia entre iterable e iterador.

Iterable es un objeto sobre el que se puede iterar. Genera un iterador cuando se pasa al método iter(). Un iterador es un objeto, que se usa para iterar sobre un objeto iterable usando el método __next__(). Los iteradores tienen el método __next__(), que devuelve el siguiente elemento del objeto. Tenga en cuenta que cada iterador también es un iterable, pero no todos los iterables son un iterador. Por ejemplo, una lista es iterable pero una lista no es un iterador. Se puede crear un iterador a partir de un iterable usando la función iter(). Para que esto sea posible, la clase de un objeto necesita un método __iter__, que devuelve un iterador, o un método __getitem__ con índices secuenciales que comienzan con 0. 

Código #1 

Python3

# code
next("GFG")

Producción :

Traceback (most recent call last):
  File "/home/1c9622166e9c268c0d67cd9ba2177142.py", line 2, in <module>
    next("GFG")
TypeError: 'str' object is not an iterator

Sabemos que str es iterable pero no es un iterador. donde si ejecutamos esto en for loop para imprimir una string, entonces es posible porque cuando se ejecuta for loop, se convierte en un iterador para ejecutar el código.                                                                                                                                                          

Python3

# code
s="GFG"
s=iter(s)
next(s)

Aquí iter() está convirtiendo s que es una string (iterable) en un iterador e imprime G por primera vez, podemos llamar varias veces para iterar sobre strings.

Cuando se ejecuta un ciclo for, la declaración for llama a iter() en el objeto, que se supone que debe recorrer. Si esta llamada tiene éxito, la llamada iter devolverá un objeto iterador que define el método __next__(), que accede a los elementos del objeto uno a la vez. El método __next__() generará una excepción StopIteration si no hay más elementos disponibles. El ciclo for terminará tan pronto como detecte una excepción StopIteration. Llamemos al método __next__() usando la función incorporada next(). 

Código n.º 2: la función ‘iterable’ devolverá True si el objeto ‘obj’ es iterable y False en caso contrario. 

Python3

# list of cities
cities = ["Berlin", "Vienna", "Zurich"]
 
# initialize the object
iterator_obj = iter(cities)
 
print(next(iterator_obj))
print(next(iterator_obj))
print(next(iterator_obj))

Producción:

Berlin
Vienna
Zurich

Nota: si se llama a ‘next(iterator_obj)’ una vez más, devolverá ‘StopIteration’.   

Código n. ° 3: verificar que el objeto sea iterable o no

Producción:

34  is iterable :  False
[4, 5]  is iterable :  True
(4, 5)  is iterable :  True
{'a': 4}  is iterable :  True
dfsdf  is iterable :  True
4.5  is iterable :  False

Publicación traducida automáticamente

Artículo escrito por Mithun Kumar 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 *