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

纯Python如何优化生成数字重复自身次数的列表的实现方法

原生Python实现方案

方案1:嵌套列表推导式(最简洁推荐)

这是可读性和简洁度平衡最好的实现,只用原生语法,无需额外中间变量:

def repetition(n):
    return [i for i in range(1, n+1) for _ in range(i)]

直接调用repetition(5)就能得到你要的[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]结果。

方案2:单循环直接追加(适合新手理解)

如果你觉得列表推导式的双重循环不好理解,可以去掉你原来生成子列表+展开的两步操作,直接往最终列表里追加元素,比你原有写法节省内存和时间:

def repetition(n):
    flat_list = []
    for i in range(1, n+1):
        # 直接追加i次i,不需要中间存子列表
        for _ in range(i):
            flat_list.append(i)
    return flat_list

方案3:sum拼接列表(短代码写法)

如果只是写短小的脚本,也可以用sum方法直接拼接生成的子列表:

def repetition(n):
    return sum([[i]*i for i in range(1, n+1)], [])

注意:这个方案在n非常大的时候性能会弱于前两个,因为sum拼接列表的时间复杂度更高,小数据量场景下可以放心使用。

对你原有写法的优化建议

你原来的代码里sequence.insert(i, [i]*i)完全可以替换成sequence.append([i]*i),因为你是按顺序从1到n插入子列表的,append不需要计算插入位置,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:03