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

如何改进Python的list_generator函数以实现预期列表输出

问题背景

待修复函数的预期输入输出规则如下:

f(0) -> []
f(1) -> [[1]]
f(2) -> [[1], [1,2]]
f(3) -> [[1], [1,2], [1,2,3]]

待改进的原始实现代码:

def list_generator(number: int) -> list:
    if number == 0:
        new_list = []
    else:
        temp_list = []
        new_list = [0] * number
        for idx, num in zip(range(len(new_list)), range(1, number + 1)):
            temp_list.append(num)
            new_list[idx] = list(set(temp_list))

    return new_list
原始代码存在的问题
  • 冗余操作过多:提前初始化长度为number的占位列表new_list没有必要;同时遍历索引和数值的zip写法属于多余逻辑,完全可以简化。
  • 实现存在不稳定风险:代码中对有序追加得到的temp_list做set转换属于无效操作,set本身不保证元素顺序,在部分Python版本中可能出现子列表元素乱序的问题。
  • 分支冗余:为输入0单独写返回分支没有必要,通用遍历逻辑可以直接覆盖输入为0的场景。
改进方案

易读版本(逻辑清晰适合新手理解)

def list_generator(number: int) -> list:
    result = []
    for i in range(1, number + 1):
        # 每次生成1到i的连续整数列表,追加到结果中
        result.append(list(range(1, i + 1)))
    return result

简洁版本(列表推导式实现)

def list_generator(number: int) -> list:
    return [list(range(1, i + 1)) for i in range(1, number + 1)]

上述实现完全覆盖所有预期输入场景,没有冗余操作,子列表元素顺序稳定,运行效率更高。当输入为0时,range(1, 0+1)为空,直接返回空列表,不需要单独写分支判断。

内容的提问来源于stack exchange,提问作者fabio.geraci

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:24:31