小编emb*_*bee的帖子

使用itertools进行递归函数应用

我需要一个Python函数iterate(f, x),它创建一个迭代器,返回值x,f(x),f(f(x)),f(f(f(x)))等(例如,Clojure的iterate).首先,我想知道:这是否已经存在于标准库的某个地方,我只是错过了它?当然,使用生成器实现起来很容易:

def iterate(f, x):
    while True:
        yield x
        x = f(x)
Run Code Online (Sandbox Code Playgroud)

只是出于好奇:在Python中有没有更多功能性的方法来实现这一点,例如使用一些itertools或functools魔术?

在Python 3.3中,这可行

def iterate(f, x):
    return accumulate(repeat(x), lambda acc, _ : f(acc))
Run Code Online (Sandbox Code Playgroud)

但看起来像是对我的虐待.我可以更好地做到这一点吗?

python iterator functional-programming generator python-itertools

6
推荐指数
1
解决办法
1033
查看次数