【发布时间】:2011-08-18 23:38:36
【问题描述】:
我发现自己在使用这 2 个自定义生成器,并在想“一定有一个 itertools 函数或已经这样做的东西!但没有找到。我错过了什么吗?谢谢!
def gothru(iters):
for i in iters:
for j in i:
yield j
def overnover(fn,startval):
val = startval
while True:
val = fn(val)
yield val
编辑:我后来想象overnover 可以如何用于生成斐波那契数列,我意识到需要对其进行泛化以允许函数具有多个参数
def overnover(fn,*args):
while True:
args = fn(*args)
return args
那么你可以这样做:
fibInfo = overnover(lambda x,y: (x+y, x), 1, 1)
-> (2,1) ... (3, 2) ... (5, 3) ... (8, 5) ... 然后:
fib = imap(lambda x:x[0], fibInfo)
-> 2 ... 3 ... 5 ... 8 ...
谢谢大家!
【问题讨论】: