iter(object)
iter(object, sentinel)
Возвращает объект итератора.
Параметры
Функция iter() принимает два параметра:
obj— может быть списком, набором, кортежем и т. д. Объект коллекции, поддерживающей итерирование (реализуетiter()), либо объект, поддерживающий протокол последовательности (реализуетgetitem(), где аргумент целое, начиная с нуля). Если передан другой объект, возбуждаетсяTypeError.sentinelнеобязательный — Если этот аргумент предоставлен, то ожидается, что obj содержит объект, поддерживающий вызов. В этом случае, созданный итератор будет вызывать указанный объект (без аргументов) с каждым обращением к своемуnext()и проверять полученное значение на равенство сsentinel. Если полученное значение равноsentinel, возбуждаетсяStopIteration, иначе возвращается полученное значение. Функция возвращает итератор по объекту, поддерживающему итерирование по его элементам.
Возвращаемое значение
Функция iter() возвращает:
- объект итератора для данного аргумента, пока не будет найден сторожевой символ
TypeErrorдля определяемого пользователем объекта, который не реализует__iter__()и__next__()или__getitem()__
Примеры
Одно из применений sentinel — чтение строк, пока не будет достигнута нужная. Следующий пример считывает файл, пока метод readline() не вернёт пустую строку:
with open('mydata.txt') as fp:
for line in iter(fp.readline, ''):
pass # Делаем что-либо с line.
Пользовательский тип, определивший call():
class MyIterable(object):
def __init__(self):
self.index = 0
self.items = [1, 2, 3, 4]
def __call__(self):
value = self.items[self.index]
self.index += 1
return value
iterator = iter(MyIterable(), 3)
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # StopIteration