Iter w Pythonie ()

Funkcja iter () w Pythonie zwraca iterator dla danego obiektu.

iter()Funkcja tworzy obiekt, który może należy powtórzyć jeden element naraz.

Obiekty te są przydatne, gdy są połączone z pętlami, takimi jak pętla for, pętla while.

Składnia iter()funkcji to:

 iter (obiekt, wartownik)

iter () Parametry

iter()Funkcja ma dwa parametry:

  • obiekt - obiekt, którego iterator ma zostać utworzony (mogą to być zbiory, krotki itp.)
  • sentinel (opcjonalne) - specjalna wartość używana do reprezentowania końca sekwencji

Wartość zwracana z iter ()

  • iter()Funkcja zwraca obiekt iteratora dla danego obiektu.
  • Jeśli obiekt zdefiniowany przez użytkownika nie implementuje __iter__()i __next__()lub __getitem()__, TypeErrorzgłaszany jest wyjątek.
  • Jeśli podano również parametr sentinel, iter()zwraca iterator, dopóki znak wartownika nie zostanie znaleziony.

Przykład 1: Działanie iter () w Pythonie

 # 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'

Wynik

 aeiou 

Przykład 2: iter () dla obiektów niestandardowych

 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))

Wynik

 1 2 3 Traceback (ostatnie połączenie ostatnie): Plik „”, wiersz 23, w pliku „”, wiersz 11, w __next__ StopIteration 

Przykład 3: iter () z parametrem sentinel

 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) 

Wynik

 2 4 8

Tutaj zaimplementowaliśmy niestandardowy iterowalny obiekt bez StopIterationwarunku.

Możemy jednak użyć iter()metody z sentinelparametrem, aby zatrzymać iterację. Jeśli wartość zwrócona z __next__()jest równa sentinel, StopIterationzostanie podniesiona, w przeciwnym razie wartość zostanie zwrócona.

Zalecana lektura: Iteratory Pythona

Interesujące artykuły...