Как мне изменить генератор в Python? - PullRequest
6 голосов
/ 11 марта 2010

Есть ли в Python общий интерфейс, из которого я мог бы извлечь изменяющее поведение генератора?

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

Как мне это сделать?

Спасибо, Бода Кидо

Ответы [ 2 ]

7 голосов
/ 11 марта 2010

Вы можете использовать функции, предоставляемые itertools , чтобы взять генератор и произвести новый генератор.

Например, вы можете использовать takewhile до тех пор, пока предикат больше не будет выполнен, и chain для новой серии значений.

Взгляните на документацию для других примеров, включая такие вещи, как ifilter , dropwise и islice и многие другие.

5 голосов
/ 11 марта 2010

Вы можете просто обернуть генератор в свой собственный генератор.

from itertools import count

def odd_count():
    for i in count():
        if i % 2:
            yield i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...