2010-03-10 70 views
4

在Python中是否有一个通用接口可以从中修改生成器的行为?如何在Python中修改生成器?

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

我该怎么做?

谢谢,博大Cydo

回答

6

您可以使用itertools提供的功能,从而利用发电机并产生一个新的生成。

例如,您可以使用takewhile,直到谓词不再满足,并且chain为新的一系列值。

查看其他示例的文档,其中包括诸如ifilter,dropwhileislice之类的内容,仅举几例。

+0

令人兴奋的,我不知道它。我现在正在阅读它! – bodacydo 2010-03-10 23:13:05

3

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

from itertools import count 

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

哇,真是太棒了,我不知道我可以很容易地包住它们!谢谢! – bodacydo 2010-03-10 23:12:37