我需要一个 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)
只是出于好奇:在 Python 中是否有更实用的方法来执行此操作,例如使用一些 itertools 或 functools 魔术?
在 Python 3.3 中,这可以工作
def iterate(f, x):
return accumulate(repeat(x), lambda acc, _ : f(acc))
但对我来说似乎是一种虐待。我可以做得更好吗?