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

Python3 内置函数Встроенные функции Python3


iter()Это встроенная функция в Python, используемая для преобразования итерируемого объекта в итератор.

Итератор — очень важная концепция в Python,iter()Он может создать итератор из любого итерируемого объекта, позволяя использоватьnext()функцию для доступа к элементам по одному.

Глоссарий: iter 是 iterator(迭代器)的缩写。


Базовый синтаксис и параметры

Формат синтаксиса

iter(object)
iter(object, sentinel)

Описание параметра

  • Параметр object:
    • Тип: итерируемый объект
    • Описание: Объект, который нужно преобразовать в итератор.
  • Параметр sentinel(необязательно):
    • Тип: произвольное значение
    • Описание: Значение sentinel; итерация останавливается при достижении этого значения.

Описание функций

  • Возвращаемое значение: Возвращает объект-итератор.
  • Особенность: Итератор может перемещаться только вперёд, но не назад.

Примеры

Пример 1: Базовое использование

Пример

# Создать итератор из списка
my_list = [1, 2, 3]
iterator = iter(my_list)

# Использовать next() для получения элементов
print(next(iterator))  # Вывод: 1
print(next(iterator))  # Вывод: 2
print(next(iterator))  # Вывод: 3

# Повторный вызов вызывает StopIteration
# print(next(iterator))

# Также можно перебирать с помощью цикла for
my_list = [1, 2, 3]
for item in iter(my_list):
    print(item, end=" ")
# Вывод: 1 2 3

Ожидаемый вывод:

1
2
3
1 2 3

Пояснение к коду:

  1. iter()Преобразовать итерируемый объект в итератор.
  2. Итератор можно перебрать только один раз; после того как он исчерпан, его нужно создать заново.

Пример 2: Создание из строк и кортежей

Пример

# Итератор строки
s = "hello"
iterator = iter(s)

print(next(iterator))  # Вывод: h
print(next(iterator))  # Вывод: e
print(next(iterator))  # Вывод: l

# Итератор кортежа
t = (1, 2, 3)
iterator = iter(t)

print(next(iterator))  # Вывод: 1
print(next(iterator))  # Вывод: 2

Ожидаемый вывод:

h
e
l
1
2

Пояснение к коду:

  • Строковый итератор возвращает по одному символу за раз.
  • Итератор кортежа возвращает по одному элементу за раз.

Пример 3: Использование параметра sentinel

Пример

# Создание пользовательского итератора с использованием sentinel
def fibonacci():
    n = 0
    while True:
        yield n
        n += 1
        if n > 10:
            raise StopIteration

# Использование sentinel (остановка при чтении определённого значения)
class ReadUntil:
    def __init__(self, data, stop_at):
        self.data = data
        self.stop_at = stop_at
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        if value == self.stop_at:
            raise StopIteration
        self.index += 1
        return value

# Создать итератор, остановиться при обнаружении "END"
data = ["a", "b", "c", "END", "d"]
iterator = iter(lambda: ReadUntil(data, "END"), Отсутствует)

for item in iterator:
    print(item, end=" ")
# Вывод: a b c

Ожидаемый вывод:

a b c

Параметр sentinel используется для создания настраиваемого поведения итерации, обычно применяется с вызываемым объектом.


Python3 内置函数Встроенные функции Python3


Другие расширения