Python Glossary English

все 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Сообщить о неточности