gpt4 book ai didi

不使用 yield 的 python 生成器无尽的流

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:38 26 4
gpt4 key购买 nike

我试图在给定函数 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

关于不使用 yield 的 python 生成器无尽的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com