Python iter ()

Функцията iter () на Python връща итератор за дадения обект.

На iter()функцията създава обект, който може да се повтори един елемент в даден момент.

Тези обекти са полезни, когато са свързани с цикли като for цикъл, докато цикъл.

Синтаксисът на iter()функцията е:

 iter (обект, дозор)

iter () Параметри

Най- iter()функцията се извършва по два параметъра:

  • обект - обект, чийто итератор трябва да бъде създаден (могат да бъдат набори, кортежи и т.н.)
  • sentinel (по избор) - специална стойност, която се използва за представяне на края на последователност

Върната стойност от iter ()

  • Най iter()функцията връща итератор обект за дадения обект.
  • Ако дефинираният от потребителя обект не се изпълнява __iter__()и __next__()или __getitem()__, TypeErrorсе повдига изключението.
  • Ако е предоставен и параметър на sentinel, iter()връща итератор, докато символът на sentinel не бъде намерен.

Пример 1: Работа на 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'

Изход

 aeiou 

Пример 2: 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))

Изход

 1 2 3 Traceback (последно последно обаждане): Файл "", ред 23, във файл "", ред 11, в __next__ StopIteration 

Пример 3: iter () с контролен параметър

 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) 

Изход

 2 4 8

Тук сме внедрили обект, който може да се итерира по поръчка, без StopIterationусловие.

Можем обаче да използваме iter()метода с sentinelпараметъра, за да спрем итерацията. Ако стойността, върната от __next__()е равна на sentinel, StopIterationще бъде повишена, в противен случай стойността ще бъде върната.

Препоръчително четене: Python Iterators

Интересни статии...