Iter de Python ()

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()__, se TypeErrorgenera 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 StopIterationcondición.

Sin embargo, podemos usar el iter()método con el sentinelparámetro para detener la iteración. Si el valor devuelto de __next__()es igual a sentinel, StopIterationse incrementará; de lo contrario, se devolverá el valor.

Lectura recomendada: iteradores de Python

Articulos interesantes...