iter()
— это встроенная функция в Python, которая возвращает итератор для заданного объекта. Функция используется для обхода элементов коллекций (таких как списки, кортежи, словари) и других объектов, поддерживающих протокол итерации.
Синтаксис функции iter()
следующий:
iter(object[, sentinel])
Здесь:
object
— объект, для которого необходимо получить итератор. Объект должен быть коллекцией или другим объектом, поддерживающим протокол итерации.sentinel
— если указан, то object
должен быть вызываемым объектом. Итерация будет продолжаться до тех пор, пока object
не вернет значение sentinel
.Для коллекций и других итерируемых объектов функция iter()
возвращает итератор, который можно использовать для последовательного доступа к элементам.
my_list = [1, 2, 3, 4]
my_iter = iter(my_list)
print(next(my_iter)) # 1
print(next(my_iter)) # 2
print(next(my_iter)) # 3
print(next(my_iter)) # 4
В этом примере функция next()
используется для извлечения следующего элемента из итератора.
Если указать второй параметр sentinel
, то object
должен быть вызываемым объектом. Функция iter()
будет вызывать этот объект и продолжать итерацию до тех пор, пока object
не вернет значение sentinel
.
import random
random_iter = iter(lambda: random.randint(0, 10), 5)
for num in random_iter:
print(num)
В этом примере iter()
будет продолжать вызывать lambda-функцию (которая генерирует случайное число от 0 до 10) до тех пор, пока не будет сгенерировано число 5.
При достижении конца итерации функция next()
вызывает исключение StopIteration
. Можно обработать это исключение с помощью конструкции try/except:
my_list = [1, 2, 3, 4]
my_iter = iter(my_list)
while True:
try:
print(next(my_iter))
except StopIteration:
break
В этом примере, когда итератор достигает конца списка, вызывается исключение StopIteration
, которое затем обрабатывается и прерывает цикл while
.
Не только встроенные типы данных в Python могут быть итерируемыми. Вы также можете сделать ваши собственные классы итерируемыми, определив для них методы __iter__()
и __next__()
. При этом функция iter()
будет возвращать объект-итератор для экземпляров вашего класса.
class MyNumbers:
def __init__(self):
self.a = 1
def __iter__(self):
return self
def __next__(self):
x = self.a
self.a += 1
return x
my_class = MyNumbers()
my_iter = iter(my_class)
print(next(my_iter)) # 1
print(next(my_iter)) # 2
print(next(my_iter)) # 3
Одним из полезных применений функции iter()
является построчное чтение файлов. С помощью функции iter()
вы можете создать итератор, который будет возвращать строки файла одну за другой, что может быть очень эффективным при работе с большими файлами.
with open('myfile.txt', 'r') as f:
for line in iter(f.readline, ''):
print(line)
В этом примере f.readline
— это вызываемый объект, который возвращает следующую строку файла при каждом вызове. Пустая строка (») используется в качестве «стража» sentinel
— признака конца файла.
Функция iter()
в Python — это мощный инструмент для работы с итерируемыми объектами. Она позволяет эффективно и удобно обрабатывать коллекции и другие объекты, поддерживающие протокол итерации. Благодаря поддержке вызываемых объектов и возможности задать условие остановки, iter()
обеспечивает высокую гибкость при реализации итераций в Python.
Содержание: