You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在生成指定长度递归迭代列表的库函数?若无该如何实现?

关于生成递归列表的库函数及实现

首先,Python标准库中没有直接提供完全符合你定义的recursive_list函数,不过可以通过现有工具或自定义代码轻松实现。

需求回顾

你需要的函数满足:

recursive_list(f, x0, n) = [x0, f(x0), f(f(x0)), f(f(f(x0))), ...]

返回包含n个元素的列表,每个后续元素是前一个元素传入函数f后的结果。

实现方式

1. 手动循环实现(最直观)

这是最容易理解和控制的方式,适配所有场景:

def recursive_list(f, x0, n):
    result = [x0]
    current = x0
    for _ in range(n - 1):
        current = f(current)
        result.append(current)
    return result
  • 逻辑:先初始化包含初始值x0的列表,再循环n-1次,每次计算f(current)并添加到列表,最终得到n个元素。

2. 利用itertools.accumulate实现(简洁)

借助标准库itertools中的accumulate函数,用更紧凑的代码实现:

from itertools import accumulate, repeat

def recursive_list(f, x0, n):
    return list(accumulate(repeat(x0, n), lambda prev, _: f(prev)))
  • 逻辑:repeat(x0, n)生成包含n个x0的迭代器,accumulate依次对每个元素传入lambda函数——忽略第二个参数,仅对前一个结果应用f,最后转换为列表得到目标结果。

3. 递归实现(仅作演示,不推荐大n)

递归可以实现,但Python的递归深度有限,当n较大时会触发栈溢出,仅作参考:

def recursive_list(f, x0, n):
    if n <= 0:
        return []
    if n == 1:
        return [x0]
    prev_list = recursive_list(f, x0, n - 1)
    return prev_list + [f(prev_list[-1])]

内容的提问来源于stack exchange,提问作者Evan Aad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:38:18