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

如何将序列数字按每50个一组拆分生成嵌套列表?

按每50个一组拆分数字范围为嵌套列表的最优实现方法

核心思路

实现需求的核心是按固定步长遍历数字范围,同时处理最后一组的边界情况:

  • 按50的步长确定每组的起始值
  • 结束值取当前组理论结束值(起始值+49)和范围最大值的较小值,避免超出边界
  • 遍历所有组,将每组的范围存入嵌套列表

Python 实现示例

def split_range(start, end, chunk_size=50):
    result = []
    current_start = start
    while current_start <= end:
        current_end = min(current_start + chunk_size - 1, end)
        # 如果需要生成完整数字列表
        result.append(list(range(current_start, current_end + 1)))
        # 若仅需范围标识(如[1..50]格式),可替换为元组或字符串:
        # result.append((current_start, current_end))
        current_start = current_end + 1
    return result

# 测试示例
print(split_range(1, 112))
# 输出:[[1, 2, ..., 50], [51, ..., 100], [101, ..., 112]]

为什么这是最优方法

  • 时间复杂度极低:仅需遍历组数(如112的情况仅3次循环),时间复杂度为O(k)(k为组数),性能可以忽略损耗
  • 边界处理严谨:通过min()函数完美覆盖最后一组不足50个的场景
  • 扩展性强:通过参数chunk_size可灵活调整每组大小,适配不同拆分需求

JavaScript 实现示例

function splitRange(start, end, chunkSize = 50) {
    const result = [];
    let currentStart = start;
    while (currentStart <= end) {
        const currentEnd = Math.min(currentStart + chunkSize - 1, end);
        // 生成完整数字数组
        const chunk = Array.from({length: currentEnd - currentStart + 1}, (_, i) => currentStart + i);
        result.push(chunk);
        currentStart = currentEnd + 1;
    }
    return result;
}

// 测试
console.log(splitRange(1, 112));

内容的提问来源于stack exchange,提问作者Dhananjaya D N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:07:11