Функция iter
в Python используется для получения итератора из объекта. Итераторы предоставляют способ последовательного доступа к элементам объекта. Эта функция имеет два варианта использования: без параметра sentinel
и с ним.
Содержание
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры использования
- Пример 1: Получение итератора из списка
- Пример 2: Использование функции с параметром sentinel
- Пример 3: Создание итератора из функции
- Примеры практического применения
- Пример 4: Обход элементов файла
- Пример 5: Итерация по пользовательскому объекту
- Важные замечания
Синтаксис
iter(object[, sentinel])
Параметры
object
: Обязательный параметр. Объект, который должен поддерживать метод__iter__()
или иметь метод__getitem__()
.sentinel
: Необязательный параметр. Если указан, тоobject
должен быть вызываемым объектом (функцией). Итерация продолжается до тех пор, пока результат вызоваobject
не станет равенsentinel
.
Возвращаемое значение
Функция возвращает итератор для переданного объекта.
Примеры использования
Пример 1: Получение итератора из списка
my_list = [1, 2, 3, 4]
it = iter(my_list)
print(next(it)) # Вывод: 1
print(next(it)) # Вывод: 2
print(next(it)) # Вывод: 3
print(next(it)) # Вывод: 4
Пример 2: Использование функции с параметром sentinel
def read_next_line():
return input("Enter line: ")
it = iter(read_next_line, 'STOP')
for line in it:
print(line)
В этом примере итерация продолжается до тех пор, пока пользователь не введет ‘STOP’.
Пример 3: Создание итератора из функции
import random
def get_random_number():
return random.randint(1, 10)
it = iter(get_random_number, 5)
for num in it:
print(num)
Итерация продолжается до тех пор, пока случайное число не станет равным 5.
Примеры практического применения
Пример 4: Обход элементов файла
with open('example.txt', 'r') as file:
it = iter(file)
for line in it:
print(line, end='')
Пример 5: Итерация по пользовательскому объекту
class Counter:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current > self.end:
raise StopIteration
else:
self.current += 1
return self.current - 1
counter = Counter(1, 5)
for num in counter:
print(num)
Важные замечания
- Поддержка протокола итератора: Объект, передаваемый в функцию
iter
, должен поддерживать метод__iter__()
или__getitem__()
. В противном случае возникнет ошибкаTypeError
. - Использование с функцией и
sentinel
: Если указан параметрsentinel
, объект должен быть вызываемым (функцией). Итерация прекращается, когда результат вызова функции равенsentinel
. - Работа с файлом: Итераторы часто используются для чтения данных из файлов, так как они позволяют обрабатывать файл построчно, экономя память.