Python iter ()

Python iter () -funktionen returnerar en iterator för det angivna objektet.

Den iter()funktion skapar ett objekt som kan itereras ett element åt gången.

Dessa objekt är användbara när de kombineras med slingor som för loop, medan loop.

iter()Funktionens syntax är:

 iter (objekt, vaktpost)

iter () Parametrar

Den iter()funktionen tar två parametrar:

  • objekt - objekt vars iterator måste skapas (kan vara uppsättningar, tuplar etc.)
  • sentinel (valfritt) - specialvärde som används för att representera slutet på en sekvens

Returvärde från iter ()

  • Den iter()Funktionen returnerar en iterator objekt för det givna objektet.
  • Om det användardefinierade objektet inte implementeras __iter__()och, __next__()eller __getitem()__, TypeErrorundantaget höjs.
  • Om Sentinel-parametern också tillhandahålls, iter()returnerar en iterator tills sentinel-tecknet inte hittas.

Exempel 1: Arbeta med 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'

Produktion

 aeiou 

Exempel 2: iter () för anpassade objekt

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

Produktion

 1 2 3 Spårning (senaste samtalet senast): Fil "", rad 23, i fil "", rad 11, i __nästa__ StopIteration 

Exempel 3: iter () med parametern 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) 

Produktion

 2 4 8

Här har vi implementerat ett anpassat iterabelt objekt utan StopIterationvillkor.

Vi kan dock använda iter()metoden med sentinelparametern för att stoppa iterationen. Om värdet som returneras från __next__()är lika med sentinel, StopIterationhöjs, annars returneras värdet.

Rekommenderad läsning: Python Iterators

Intressanta artiklar...