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 и поймите, готовы ли вы идти на курсы
  • 3 views
  • 0 Comment

Leave a Reply

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

Свежие комментарии

    Рубрики

    About Author 01.

    Roman Spiridonov
    Roman Spiridonov

    Привет ! Мне 38 лет, я работаю в области информационных технологий более 4 лет. Тут собрано самое интересное.

    Our Instagram 04.

    Categories 05.

    © Speccy 2020 / All rights reserved

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