如何在Python中修改生成器?

时间:2010-03-10 23:06:09

标签: python generator

我是否可以从Python派生出一个通用接口来修改生成器的行为?

例如,我想修改现有的生成器以在流中插入一些值并删除其他一些值。

我该怎么做?

谢谢,Boda Cydo

2 个答案:

答案 0 :(得分:7)

您可以使用itertools提供的功能来获取生成器并生成新的生成器。

例如,您可以使用takewhile直到不再满足谓词,并在新系列值上使用chain

请查看其他示例的文档,包括ifilterdropwhileislice等内容,仅举几例。

答案 1 :(得分:5)

您可以将生成器包装在您自己的生成器中。

from itertools import count

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