views:

58

answers:

2

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

+3  A: 

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.

Mark Byers
Mind blowing, I didn't know it. I am now reading about it!
bodacydo
+1  A: 

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
Chris B.
Wow, that is amazing, i didn't know i could wrap them so easily! Thanks!
bodacydo