Share This
Связаться со мной
Крути в низ
Categories
//Что такое итераторы и генераторы, чем они отличаются?

Что такое итераторы и генераторы, чем они отличаются?

16.10.2020Category : Python

Итератор – это интерфейс, позволяющий перебирать элементы последовательности. Он используется, например, в цикле for … in …, но этот механизм скрыт от глаз разработчика. При желании итератор можно получить «в сыром виде», воспользовавшись функцией iter().

Чтобы получить следующий элемент коллекции или строки, нужно передать итератор функции next().

Под капотом функциональность реализуется в методах __iter__ и __next__.

chto takoe iteratory i generatory chem oni otlichajutsja da32305 - Что такое итераторы и генераторы, чем они отличаются?

Пример простого итератора:

class SimpleIterator:     def __iter__(self):         return self      def __init__(self, limit):         self.limit = limit         self.counter = 0      def __next__(self):         if self.counter < self.limit:             self.counter += 1             return 1         else:             raise StopIteration  simple_iter = SimpleIterator(5)  for i in simple_iter:     print(i) # 1 # 1 # 1 # 1 # 1 

На базе итераторов в языке появились новые элементы синтаксического сахара: выражения-генераторы и генераторы коллекций. Они позволяют устанавливать условия для отбора.

numbers = range(10) squared = [n ** 2 for n in numbers if n % 2 == 0] print(squared)   # [0, 4, 16, 36, 64]

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

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

Очевидно, что генераторы могут выполнять работу функций map и filter. Более того, они справляются с этой задачей эффективнее.

    Проходите тест по Python и поймите, готовы ли вы идти на курсы
  • 16 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close