Этот блог поможет вам понять следующие концепции.

  • Что такое Iterable
  • Что такое итератор
  • Как работают итерации в цикле for
  • Что такое протокол итератора
  • Что такое ленивая оценка
  • Преимущество итератора

Что такое Iterable:

Iterable - это любой объект Python, который может возвращать свои члены по одному и может повторяться для цикла for. Примеры List, String, Tuple являются примером итерации, потому что мы можем извлекать член этого элемента один за другим, а также мы можем выполнять итерацию цикла for.

В приведенном выше примере мы создали список в виде чисел, а затем повторили цикл с помощью цикла for.

Итак, теперь вопрос в том, как мы узнаем, является ли объект итерируемым или нет?

Ответ: Если объект содержит метод __iter __ () (он также называется dunder или magic method), то он является итеративным, и мы можем проверить, содержит ли объект метод __Iter __ () или нет, используя встроенное ключевое слово «dir».

Теперь ясно, что любой объект, содержащий метод __iter __ (), является Iterable.

Что такое итератор:

Итератор - это объект, который сохраняет текущее состояние через итерацию и создает следующее значение, когда вы вызываете метод next (). Таким образом, любой объект, имеющий метод __next __ (), является итератором. Мы можем создать объект-итератор, применив iter () встроенная функция в итерацию.

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

Как упоминалось выше, итератор - это объект, который содержит метод __next __ (). Давайте проверим то же самое, используя встроенное ключевое слово «dir».

Из изображения выше мы можем сделать вывод, что Iterator является Iterable, потому что он также содержит метод __iter __ ().

Как работает итерация в цикле for:

Мы можем использовать цикл for в Python для итерации по итерации, такой как строка, список, кортеж и т. Д.

Но как это на самом деле реализовано? Давайте посмотрим.

Из приведенного выше кода мы можем понять, что цикл for внутренне использует цикл while и итератор.

Что такое протокол итератора:

Протокол итератора Python включает две функции: одна - iter (), а другая - next (). Функция iter () используется для преобразования итерационного объекта в итератор, а функция next () используется для получения следующего значения.

Что такое ленивая оценка:

Итератор позволяет нам создавать ленивую итерацию, которая не выполняет никакой работы, пока мы не попросим их о следующем элементе.

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

Итератор помогает нам экономить память и время процессора, и этот подход называется ленивым вычислением.

В чем преимущество итератора?

  • Итератор в Python экономит ресурсы. Чтобы получить весь элемент, в памяти одновременно хранится только один элемент. В отличие от списка или кортежа, где все значения хранятся одновременно.
  • Для небольших наборов данных итератор и подход на основе списка имеют одинаковую производительность. Для более крупного набора данных итератор экономит и время, и пространство.
  • Более чистый код.
  • Итератор может работать с бесконечными последовательностями.

Спасибо за чтение! Если вам понравился этот пост, оставьте 👏🏻 и поделитесь им! Дайте мне знать, что вы думаете в комментариях. Я также рад подключиться к LinkedIn. Еще раз спасибо и продолжайте учиться!