iter(object [, sentinel])
La función iter devuelve un objeto iterable a partir de otro objeto. En su configuración más sencilla solo recibirá un argumento -el objeto a convertir en iterable-. Esto requiere que dicho objeto soporte los protocolos de iteración o de secuencia (métodos __iter__ y __getitem__ respectivamente). Si no soporta ninguno de ellos la función iter devolverá un error de tipo (TypeError).
Si la función iter recibe un segundo argumento ("sentinel"), el objeto incluido como primer argumento deberá ser de tipo callable (que incluya el método __call__). En este caso, el iterador generado por iter invocará al objeto para cada ejecución del método __next__(): Si el valor que se reciba es igual a sentinel se generará una excepción de tipo StopIteration. En caso contrario se devolverá el valor recibido (véase ejemplo más adelante).
- object: Objeto a convertir a iterable.
- sentinel: Valor para el que el iterable generado devolverá una excepción de tipo StopIteration.
La función iter devuelve un iterable.
Si partimos de la siguiente lista:
a = [2, 4, 6, 8]
...podemos convertirla en un iterable con el siguiente código:
a_iter = iter(a)
a_iter
<list_iterator at 0x173e84d6850>
Es posible usar la función next para ir extrayendo los valores del iterable:
next(a_iter)
2
next(a_iter)
4
Para probar el uso del segundo argumento, sentinel, creemos una función (objeto "callable") que, por ejemplo, genere un número entero aleatorio entre 0 y 5, ambos incluidos:
import random
def f():
return random.randint(0, 5)
Ahora convirtámosla en iterable indicando como centinela el número 3:
f_iter = iter(f, 3)
Esto significa que, cada vez que se ejecute la función next sobre f_iter se comparará el valor obtenido con el número 3 y, si coincide, se generará una excepción:
while True:
print(next(f_iter))
4
0
1
5
2
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-8-47d3ed0dc577> in <module>
1 while True:
----> 2 print(next(f_iter))
StopIteration: