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

Python实现按初始列表值重复连续数字生成目标列表

解决Python列表生成问题:按指定次数重复连续数字

嘿,别担心,这个需求其实很好实现!我来一步步给你讲清楚怎么做。

先确认下你的需求:给定初始列表initialList,我们要生成一个目标列表,其中第i个数字(从0开始计数)会重复initialList[i]次,对吧?比如你给的例子:

  • initialList[0] = 1 → 数字0重复1次 → [0]
  • initialList[1] = 2 → 数字1重复2次 → [1,1]
  • initialList[2] = 3 → 数字2重复3次 → [2,2,2]
  • initialList[3] =5 → 数字3重复5次 → [3,3,3,3,3]
    把这些部分拼起来就是你要的targetList了。

接下来给你几种实现方式,你可以根据自己的习惯选:

方法1:基础循环(适合新手理解)

用最直观的循环来构建列表,逻辑清晰,容易看懂:

initialList = [1,2,3,5]
targetList = []
for i in range(len(initialList)):
    # 把数字i重复initialList[i]次,添加到目标列表
    targetList.extend([i]*initialList[i])
print(targetList)  # 输出: [0,1,1,2,2,2,3,3,3,3,3]

这里[i]*initialList[i]会生成一个包含initialList[i]个i的子列表,用extend()把它合并到目标列表里——别用append()哦,它会把整个子列表当成一个元素加进去。

方法2:列表推导式(更简洁)

Python的列表推导式可以一行搞定,写法更优雅:

initialList = [1,2,3,5]
targetList = [i for i, count in enumerate(initialList) for _ in range(count)]
print(targetList)

enumerate(initialList)会同时拿到索引i和对应的重复次数count,内层循环负责重复count次生成i,最后自动把所有结果收集成列表。

方法3:用itertools.repeat(高效处理大列表)

如果你的初始列表数据量很大,用itertools.repeat会更高效——它不会提前生成所有重复的子列表,而是按需生成,内存占用更低:

import itertools

initialList = [1,2,3,5]
targetList = []
for i, count in enumerate(initialList):
    targetList.extend(itertools.repeat(i, count))
print(targetList)

你可以试试这几种方法,都能得到你想要的结果。如果还有其他疑问,随时问哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:23