iterate(f, x)
値x、f(x)、f(f(x))、f(f(f(x)))など(たとえば、Clojureのiterate
)を返すイテレーターを作成するPython関数が必要です。まず第一に、私は疑問に思っていました:これはすでに標準ライブラリのどこかに存在し、私はそれを見逃しているだけですか?もちろん、ジェネレーターを使用して実装するのは簡単です。
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))
しかし、私には虐待のように見えます。これをもっとうまくできますか?