La función iter () de Python devuelve un iterador para el objeto dado.
La iter()
función crea un objeto que se puede iterar un elemento a la vez.
Estos objetos son útiles cuando se combinan con loops como for loop, while loop.
La sintaxis de la iter()
función es:
iter (objeto, centinela)
Parámetros de iter ()
La iter()
función toma dos parámetros:
- objeto : objeto cuyo iterador debe crearse (pueden ser conjuntos, tuplas, etc.)
- centinela (opcional) : valor especial que se utiliza para representar el final de una secuencia
Valor de retorno de iter ()
- La
iter()
función devuelve un objeto iterador para el objeto dado. - Si el objeto definido por el usuario no se implementa
__iter__()
,__next__()
yo__getitem()__
, seTypeError
genera la excepción. - Si también se proporciona el parámetro centinela,
iter()
devuelve un iterador hasta que no se encuentra el carácter centinela.
Ejemplo 1: funcionamiento de Python iter ()
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Salida
aeiou
Ejemplo 2: iter () para objetos personalizados
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Salida
1 2 3 Rastreo (última llamada más reciente): Archivo "", línea 23, en Archivo "", línea 11, en __siguiente__ StopIteration
Ejemplo 3: iter () con parámetro centinela
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Salida
2 4 8
Aquí, hemos implementado un objeto iterable personalizado sin una StopIteration
condición.
Sin embargo, podemos usar el iter()
método con el sentinel
parámetro para detener la iteración. Si el valor devuelto de __next__()
es igual a sentinel
, StopIteration
se incrementará; de lo contrario, se devolverá el valor.
Lectura recomendada: iteradores de Python