Автор оригинала: 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.