Maintaining State in Generators. Python

Введение

В этой статье продолжается обзор генераторов в Python 3 начатый здесь

Создайте файл generators_demo.py и копируйте туда код из примеров.

Запустить файл можно командой python3 generators_demo.py

Рассмотрим код, который будет возвращать из списка определённое количество неповторяющихся элементов

def take(count, iterable): counter = 0 for item in iterable: if counter == count: return counter += 1 yield item def distinct(iterable): seen = set() for item in iterable: if item in seen: continue yield item seen.add(item) # continue - finish current loop iteration and begin the next iteration immediately def run_pipeline(): items = [3, 6, 6, 2, 1, 1] for item in take(3, distinct(items)): print(item) run_pipeline()

distinct - это генератор, который выдаёт по одному элементу, если этого элемента нет во множестве (в set) seen

take - это тоже генератор - он просто берет определённое количество элементов

python generators_demo.py

3 6 2

Каждый вызов функции-генератора создаёт новый генератор-объект (generator object)

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: