我需要一个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