Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Итераторы Python

Итераторы Python

Итераторы — это объекты, которые можно повторять. В этом руководстве вы узнаете, как работает итератор и как создать собственный итератор с помощью методов __iter__ и __next__.

Видео:Итераторы Python

Итераторы в Python

Итераторы повсюду в Python. Они элегантно реализованы в 05. петли, включения, генераторы и т. д., но скрыты от глаз.

Итератор в Python — это просто объект, который можно повторять. Объект, который будет возвращать данные по одному элементу за раз.

С технической точки зрения, объект итератора в Python должен реализовать два специальных метода, 19 и 22 , которые в совокупности называются протоколом итератора. .

Объект называется итерируемым если мы сможем получить от него итератор. Большинство встроенных в Python контейнеров, таких как список, кортеж, строка и т. д., являются итерируемыми.

34 функция (которая, в свою очередь, вызывает функцию 41 метод) возвращает из них итератор.

<час>

Итерация через итератор

Мы используем 54 функция для ручного перебора всех элементов итератора. Когда мы достигнем конца и больше не будет возвращаемых данных, он поднимет 61 Исключение. Ниже приведен пример.

06

Вывод

15 

Более элегантный способ автоматической итерации — использование цикла for. Используя это, мы можем перебирать любой объект, который может возвращать итератор, например список, строку, файл и т. д.

23
<час>

Работа цикла for для итераторов

Как мы видим в приведенном выше примере, 72 цикл смог автоматически перебирать список.

На самом деле 87 loop может выполнять итерацию по любому итерируемому объекту. Давайте подробнее рассмотрим, как 95 Цикл на самом деле реализован в Python.

37

На самом деле реализовано как.

45

Итак, внутри 104 цикл создает объект итератора, 113 по телефону 127 на итерируемом объекте.

Как ни странно, этот 136 Цикл на самом деле является бесконечным циклом while.

Внутри цикла вызывается 141 для получения следующего элемента и выполнения тела 155 цикл с этим значением. После того, как все элементы будут исчерпаны, 160 поднимается, который удерживается внутри, и петля заканчивается. Обратите внимание, что любое другое исключение будет пропущено.

<час>

Создание пользовательских итераторов

В Python легко создать итератор с нуля. Нам просто нужно реализовать 171 и 180 методы.

192 Метод возвращает сам объект итератора. При необходимости можно выполнить некоторую инициализацию.

203 метод должен возвращать следующий элемент в последовательности. При достижении конца и при последующих вызовах он должен поднять 216 .

Здесь мы показываем пример, который даст нам следующую степень числа 2 на каждой итерации. Показатель степени начинается с нуля до заданного пользователем числа.

Если вы ничего не знаете об объектно-ориентированном программировании, посетите Python Object-Oriented Programming.

53

Вывод

66

Мы также можем использовать 220 loop для перебора нашего класса итератора.

78
<час>

Бесконечные итераторы Python

Нет необходимости, чтобы элемент в объекте итератора был исчерпан. Могут быть бесконечные итераторы (которые никогда не заканчиваются). Мы должны быть осторожны при работе с такими итераторами.

Вот простой пример, демонстрирующий бесконечные итераторы.

Встроенная функция 230 может быть вызвана с двумя аргументами, где первый аргумент должен быть вызываемым объектом (функцией), а второй — часовым. Итератор вызывает эту функцию до тех пор, пока возвращаемое значение не будет равно часовому.

85

Мы видим, что 242 функция всегда возвращает 0. Поэтому передавайте ее как 254 вернет итератор, который вызывает 263 пока возвращаемое значение не станет равным 1. Этого никогда не происходит, и мы получаем бесконечный итератор.

Мы также можем создавать собственные бесконечные итераторы. Следующий итератор теоретически вернет все нечетные числа.

95

Пример запуска будет следующим.

102

И так далее...

Будьте осторожны, чтобы включить условие завершения при переборе этих типов бесконечных итераторов.

Преимущество использования итераторов в том, что они экономят ресурсы. Как показано выше, мы могли бы получить все нечетные числа, не сохраняя в памяти всю систему счисления. У нас может быть бесконечное количество элементов (теоретически) в конечной памяти.

В Python есть более простой способ создания итераторов. Чтобы узнать больше, посетите:Генераторы Python с использованием yield.


Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Аргументы функции Python
  5. Словарь Питона
  6. Замыкания Python
  7. Дата и время Python
  8. Сон питона ()
  9. Python — Обзор
  10. Питон — Числа