Этот блог поможет вам понять следующие концепции.
- Что такое 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. Еще раз спасибо и продолжайте учиться!