如何高效生成重复指定次数的数字序列?Python性能优化求助
优化重复数字序列生成效率的方案
方法1:纯Python列表推导式
列表推导式比显式嵌套循环+append的执行效率高很多,底层优化减少了循环中的函数调用开销:
startNum = 1 endNum = 7000 # 生成从startNum到endNum的数字,每个重复endNum次 sequence = [num for num in range(startNum, endNum + 1) for _ in range(endNum)]
如果需要从0开始生成(对应你原代码的逻辑),把range(startNum, endNum + 1)改为range(endNum)即可。
方法2:Numpy向量化操作(大数据量首选)
Numpy的repeat函数基于C实现,处理百万级以上序列时速度远超纯Python,同时内存效率更高:
import numpy as np startNum = 1 endNum = 7000 # 生成目标序列,若无需Python列表,可省略.tolist()直接使用numpy数组 sequence = np.repeat(np.arange(startNum, endNum + 1), endNum).tolist()
直接使用numpy数组还能避免Python列表的额外内存开销,后续数据处理也更高效。
原代码的问题点
- 导入了
pandas却未使用,多余依赖会增加启动时间,建议删除。 - 嵌套循环+
append的方式效率极低:4900万次append操作会频繁触发列表扩容,产生大量额外性能损耗。 - 末尾的
print(i)仅输出最后一个循环变量值,若要验证结果,建议改为print(len(sequence))查看序列长度是否符合预期(应为endNum * (endNum - startNum + 1))。
内容的提问来源于stack exchange,提问作者libing bai
相关产品推荐
相关产品推荐

