How do I modify a generator in Python?

2019-04-07 18:49发布

问题:

Is there a common interface in Python that I could derive from to modify behavior of a generator?

For example, I want to modify an existing generator to insert some values in the stream and remove some other values.

How do I do that?

Thanks, Boda Cydo

回答1:

You can use the functions provided by itertools to take a generator and produce a new generator.

For example, you can use takewhile until a predicate is no longer fulfilled, and chain on a new series of values.

Take a look at the documentation for other examples, including things like ifilter, dropwhile and islice to name just a few more.



回答2:

You can just wrap the generator in your own generator.

from itertools import count

def odd_count():
    for i in count():
        if i % 2:
            yield i