„Python iter“ ()

„Python iter“ () funkcija grąžina duoto objekto iteratorių.

iter()Funkcija sukuria objektą, kuris gali būti pakartota vieną elementą vienu metu.

Šie objektai yra naudingi kartu su kilpomis, pvz., Kilpa, o kilpa.

iter()Funkcijos sintaksė yra tokia:

 iteris (objektas, sargybinis)

iter () parametrai

iter()Funkcija trunka du parametrus:

  • objektas - objektas, kurio iteratorių reikia sukurti (gali būti rinkiniai, rinkiniai ir kt.)
  • sentinel (neprivaloma) - speciali vertė, naudojama sekos pabaigai žymėti

Grąžinimo vertė iš iter ()

  • iter()Funkcija grąžina iteratorių objektą tikroje objekto.
  • Jei vartotojas apibrėžtas objektas neįgyvendina __iter__()ir __next__()ar __getitem()__, The TypeErrorišimtis yra pakelta.
  • Jei taip pat pateikiamas „sentinel“ parametras, iter()grąžina iteratorių, kol sargybinio simbolis nerastas.

1 pavyzdys: „Python iter“ () darbas

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

Rezultatas

 aeiou 

2 pavyzdys: pasirinktinių objektų iter ()

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

Rezultatas

 1 2 3 „Traceback“ (paskutinis paskutinis skambutis paskutinis): Failo „“, 23 eilutė, faile „“, 11 eilutė, __next__ StopIteration 

3 pavyzdys: iter () su sentinel parametru

 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) 

Rezultatas

 2 4 8

Čia mes įdiegėme pasirinktinį kartojamą objektą be StopIterationsąlygos.

Tačiau pakartojimui sustabdyti galime naudoti iter()metodą su sentinelparametru. Jei grąžinta vertė __next__()yra lygi sentinel, StopIterationbus padidinta, kitaip vertė bus grąžinta.

Rekomenduojamas skaitymas: „ Python Iterators“

Įdomios straipsniai...