我试图在给定函数 f 和初始值 x 的情况下生成无穷无尽的结果流 所以第一次调用应该给出初始值,第二次调用应该给出 f(x),第三次调用是 f(x2) 而 x2 是 f(x) 的前一个结果等等..
我想出了什么:
def generate(f, x):
return itertools.repeat(lambda x: f(x))
这似乎不起作用。有任何想法吗? (我不能在我的代码中使用 yield )。我也不能使用超过 1 行代码来解决这个问题。任何帮助将不胜感激。
还请注意,在之前的 ex 中。我被要求使用产量。没有问题:
while True:
yield x
x = f(x)
这很好用。但是现在..不知道如何做没有
请您参考如下方法:
在 Python 3.3 中,您可以使用 itertools.accumulate:
import itertools
def generate(f, x):
return itertools.accumulate(itertools.repeat(x), lambda v,_:f(v))
for i, val in enumerate(generate(lambda x: 2*x, 3)):
print(val)
if i == 10:
break
