Документация по Python

Итерируемые и итераторы

В: Документация по Python

Введение

Примеры

Итератор против Итерируемого против Генератора

Итерацию является объектом , который может вернуть итератор. Любой объект с состоянием , которое имеет __iter__ метод и возвращает итератор является итерацией. Он также может быть объектом без государства , которое реализует __getitem__ метод. - Метод может принимать индексы (начиная с нуля) и не поднимать IndexError когда индексы больше не действительны.

Пайтона str класс является примером __getitem__ Iterable.

Итератор это объект , который производит следующее значение в последовательности при вызове next(*object*) на какой - либо объект. Кроме того, любой объект с __next__ методой является итератором. Итератора поднимает StopIteration после исчерпания итератора и не может быть повторно использована в этой точке.

Итерируемые классы:

Iterable классы определяют __iter__ и __next__ метод. Пример повторяемого класса:

 class MyIterable:

    def __iter__(self):

         return self

    def __next__(self):
         #code

#Classic iterable object in older versions of python, __getitem__ is still supported...
class MySequence:

    def __getitem__(self, index):

         if (condition):
             raise IndexError
         return (item)

 #Can produce a plain `iterator` instance by using iter(MySequence())

 

Попытка создать экземпляр абстрактного класса из collections модулей , чтобы лучше видеть.

Пример:

import collections
collections.Iterator()

#File "<stdin>", line 1, in <module>
#TypeError: Can't instantiate abstract class Iterator with abstract #methods __next__

TypeError: Не могу создать экземпляр абстрактного класса Iterator с абстрактными методами __next__

Обработайте совместимость Python 3 для итеративных классов в Python 2, выполнив следующие действия:

class MyIterable(object): #or collections.Iterator

     def __iter__(self): 
          return self

     def next(self): #code
     __next__ = next

Оба они теперь являются итераторами и могут проходить через:

ex1 = MyIterableClass()
ex2 = MySequence()

for (item) in (ex1): #code
for (item) in (ex2): #code

 

Генераторы простые способы создания итераторов. Генератор представляет собой итератор и итератор является итерацией.

Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.