gpt4 book ai didi

python - 使用 itertools 进行递归函数应用

转载 作者:太空狗 更新时间:2023-10-29 22:27:08 25 4
gpt4 key购买 nike

我需要一个 Python 函数 iterate(f, x) 来创建一个返回值 x, f(x), f(f(x)), f(f(f(x ))), 等等(例如 Clojure's 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))

但对我来说似乎是一种虐待。我可以做得更好吗?

最佳答案

itertools 中似乎没有任何东西可以满足您的需求,但 itertools 是一个深宝箱,所以我可能会遗漏一些东西。

您的生成器代码看起来不错。我不知道你为什么要用 accumulate 来写它,除非你在玩一个荒谬的代码高尔夫游戏,或者你想给 Haskell 势利小人留下深刻印象。编写您的函数,使其可读、可理解和可维护。无需太聪明。

关于python - 使用 itertools 进行递归函数应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636670/

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