Функцията 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