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

如何编写Python函数实现整数左闭右开区间的全拆分?

实现整数左闭右开区间的全分段生成函数

需求说明

所有区间均为整数型左闭右开区间,内部区间始终包含在全局区间内。给定全局区间[0,22[与内部区间[3,6[、[12,15[,需要生成覆盖所有分段的区间列表:[0,3[ ∪ [3,6[ ∪ [6,12[ ∪ [12,15[ ∪ [15,22[,对应元组格式为[(0, 3), (3, 6), (6, 12), (12, 15), (15, 22)]。

修复后的函数实现

def allspans(r, spans):
    # 按内部区间左端点排序,兼容无序输入场景
    sorted_spans = sorted(spans, key=lambda x: x[0])
    result = []
    current_start = r[0]
    
    for s_start, s_end in sorted_spans:
        # 填补当前起点到内部区间左端点的空隙段
        if current_start < s_start:
            result.append((current_start, s_start))
        # 加入内部区间本身
        result.append((s_start, s_end))
        current_start = s_end
    
    # 补上最后一段:内部区间终点到全局区间终点
    if current_start < r[1]:
        result.append((current_start, r[1]))
    
    return result

# 测试示例
print(allspans((0, 22), [(3,6), (12,15)]))  # 输出:[(0, 3), (3, 6), (6, 12), (12, 15), (15, 22)]

核心逻辑说明

  1. 排序内部区间:避免输入的内部区间无序导致分段混乱,确保按从左到右的顺序处理。
  2. 逐段衔接:从全局区间左端点开始,依次衔接每个内部区间的前后端点,自动填补空隙段。
  3. 收尾处理:遍历完所有内部区间后,补上最后一段(内部区间最右端到全局区间右端)。

常见错误原因

之前的索引遍历出错,大概率是因为未对内部区间排序,或者硬编码索引导致漏处理空隙段、越界访问,比如直接按固定索引取区间端点,忽略了输入可能无序或存在多个空隙的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:20:41