2010-03-10 118 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