все Python 3Встроенные функциипонятие
iter
итераторы
Возвращает итератор. С двумя аргументами — вызывает функцию до значения sentinel.
Синтаксис
iter(object)
iter(callable, sentinel)
Итератор одноразовый, и iter от уже полученного итератора вернёт его же — второй проход по тому же объекту даст пустоту, нужен новый iter от исходной коллекции. Форма с двумя аргументами вызывает функцию без аргументов снова и снова, пока та не вернёт значение sentinel; сам sentinel в выдачу не попадает. Это удобный способ читать поток до маркера конца, не городя while True с проверкой и break.
Примеры
it = iter([1,2,3])
print(next(it), next(it)) # → 1 2
it2 = iter('hello')
print(list(it2)) # → ['h','e','l','l','o']
# sentinel-вариант
from io import StringIO
f = StringIO('a\nb\nc')
for line in iter(f.readline, ''):
print(line.strip())
print(list(iter(range(5)))) # → [0, 1, 2, 3, 4]
it = iter([1,2,3])
print(next(it)) # → 1
print(next(it)) # → 2
print(next(it)) # → 3
print(next(it, 'end')) # → end
# iter со sentinel: вызывать, пока не вернёт ''
import io
f = io.StringIO('line1\nline2\n')
for line in iter(f.readline, ''):
print(line.strip()) # → line1 / line2
for ch in iter('hello'):
print(ch, end='') # → hello
print()
print(next(iter([]), None)) # → None — default вместо StopIteration
# Бесконечный итератор + islice
from itertools import islice, count
it4 = count(1)
print(list(islice(it4, 5))) # → [1,2,3,4,5]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности