Функция iter( ) в Python

Обложка к статье "Функция iter( ) в Python"

Функция iter в Python используется для получения итератора из объекта. Итераторы предоставляют способ последовательного доступа к элементам объекта. Эта функция имеет два варианта использования: без параметра sentinel и с ним.

Синтаксис

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)

Важные замечания

  1. Поддержка протокола итератора: Объект, передаваемый в функцию iter, должен поддерживать метод __iter__() или __getitem__(). В противном случае возникнет ошибка TypeError.
  2. Использование с функцией и sentinel: Если указан параметр sentinel, объект должен быть вызываемым (функцией). Итерация прекращается, когда результат вызова функции равен sentinel.
  3. Работа с файлом: Итераторы часто используются для чтения данных из файлов, так как они позволяют обрабатывать файл построчно, экономя память.

Оцените статью
( Пока оценок нет )
Обучение Python
Добавить комментарий