Рубрики
Без рубрики

Питонский итератор

Python Iterator Пример Учебное пособие, итератор в Python, Python iTerator Протокол, Python ITERATOR ITER () и NEXT () Способ примера метода, исключение задержания

Автор оригинала: Pankaj Kumar.

Хороший день учащихся! В нашем предыдущем уроке мы узнали о перегрузке оператора Python. В этом руководстве мы собираемся узнать о питоном итераторе.

Питонский итератор

Сознательно или неосознанно вы использовали итератор в вашем коде Python. В основном, итератор является объектом, который используется для итерации через итеративный элемент. Не понял значение последней строки? Ну, не волнуйся. Мы заставим вас понять о питоном итераторе через наш учебник.

Python Iterator и Iterable элементы

Большинство объектов Python являются итеративными. В Python все последовательности, такие как Python String, Python List, Python словарь и т. Д., являются неразмерными. Теперь, что такое итератор? Предположим, группа из 5 мальчиков стоит в очереди. Вы указываете на первый мальчик и спросите его о его имени. Затем он ответил. После этого вы спрашиваете следующего мальчика и так далее. На приведенной ниже картинке проиллюстрируют вещь.

В этом случае вы Итератор !!!! Очевидно, что группа мальчиков – это элемент. Надеюсь, вы понимаете сейчас.

Python iTerator протокол

Протокол iTerator Python включает в себя две функции. Один из них ИТЕР () а другой – Далее () Отказ В этом разделе мы научимся о том, как пройти повторный элемент, использующий Python Reerator Protocol.

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

После этого вы делаете это снова. ИТЕР () Функция используется для создания итератора ITERATION элемента. И Далее () Функция используется для переноса следующего элемента.

Пример питона итератора

Если итератор выходит за пределы количества намеренных элементов, то Далее () Метод поднимет Заставка исключение. Смотрите код ниже для примера Python iTerator.

list_string = ['Boy 1', 'Boy 2', 'Boy 3', 'Boy 4', 'Boy 5']

iterator_you = iter(list_string)

# point the first boy
output = next(iterator_you)
# This will print 'Boy 1'
print(output)

# point the next boy, the second boy
output = next(iterator_you)
# This will print 'Boy 2'
print(output)

# point the next boy, the third boy
output = next(iterator_you)
# This will print 'Boy 3'
print(output)

# point the next boy, the fourth boy
output = next(iterator_you)
# This will print 'Boy 4'
print(output)

# point the next boy, the fifth boy
output = next(iterator_you)
# This will print 'Boy 5'
print(output)

# point the next boy, but there is no boy left
# so raise 'StopIteration' exception
output = next(iterator_you)
# This print will not execute
print(output)

Выход

Boy 1
Boy 2
Boy 3
Boy 4
Boy 5
Traceback (most recent call last):
  File "/home/imtiaz/Desktop/py_iterator.py", line 32, in 
    output = next(iterator_you)
StopIteration

Создание питонатератора

Тем не менее, вы можете сделать свои собственные указанные итераторы Python. Для этого вам приходится реализовать класс Python. Я предполагаю, что вы знаете о классе Python. Если вы не знаете об этом, вы можете прочитать наш учебник по поводу класса Python.

Как мы уже говорили, что протокол Python iTerator состоит из двух методов. Поэтому нам нужно реализовать эти метод.

Например, вы хотите создать список номеров FIBONACCI, чтобы каждый раз вызовел следующую функцию, он возвращает вам следующий номер FIBONACCI.

Чтобы поднять исключение, мы ограничиваем значение n ниже 10. Если значение n достигает 10, он повысит исключение. Код будет таким.

class fibo:
    def __init__(self):
        # default constructor
        self.prev = 0
        self.cur = 1
        self.n = 1

    def __iter__(self):  # define the iter() function
        return self

    def __next__(self):  # define the next() function
        if self.n < 10:  # Limit to 10
            # calculate fibonacci
            result = self.prev + self.cur
            self.prev = self.cur
            self.cur = result
            self.n += 1
            return result
        else:
            raise StopIteration  # raise exception

# init the iterator
iterator = iter(fibo())
# Try to print infinite time until it gets an exception
while True:
    # print the value of next fibonacci up to 10th fibonacci
    try:
        print(next(iterator))
    except StopIteration:
        print('First 9 fibonacci numbers have been printed already.')
        break  # break the loop

Итак, вывод будет

1
2
3
5
8
13
21
34
55
First 9 fibonacci numbers have been printed already.

Зачем делать питона итератор

После прохождения в предыдущем разделе возникнет вопрос, который должен возникнуть вопрос, что поэтому мы должны сделать Python iTerator.

Что ж, мы уже видели, что итератор может пройти итеративный элемент. Предположим, в нашем предыдущем примере, если мы сделаем список номеров FIBONACCI, а затем пройдите его через питонский итератор, он примет огромную память. Но если вы создадите простые класс iTerator Python, вы можете обслуживать вашу цель, не потребляя большую память.

Так что это все для питонатератора. Надеюсь, вы теперь можете работать с Python iTerator. Для любого дополнительного запроса вы можете использовать окно комментариев. Узнайте и практикуйте столько, сколько сможете.

# HappyCoding

Ссылка: Python Doc.