Генераторы, примеры, назначение.

Генераторы — это «ленивые» итераторы — функции, возвращающие следующий элемент тогда, когда он запрашивается. В генераторах запоминается точка выхода из функции и при следующем обращении работа функции продолжается с места выхода.

Для создания генераторов используют функции, содержащие в своем теле ключевое слово «yield» — такие функции возвращают объект-генератор.

def reverse(data):
    new_data = list(data)
    new_data.reverse()
    for item in new_data:
        yield item

>>> rev = reverse("string")
>>> rev
<generator object reverse at 0x7fa00b285aa0>
>>> [char for char in rev]
['g', 'n', 'i', 'r', 't', 's']

В генераторах списков можно использовать любые выражения Python.

С помощью генераторов списков можно легко отобразить один список в другой, применив некоторую функцию к каждому элементу.

>>> a_list = [1, 9, 8, 4]
>>> [elem * 2 for elem in a_list]
[2, 18, 16, 8]

>>> a_list
[1, 9, 8, 4]

>>> a_list = [elem * 2 for elem in a_list]
>>> a_list
[2, 18, 16, 8]

Генераторы множеств

Last updated

Was this helpful?