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

Python合并相邻起止元组是否有标准库或Numpy相关操作?

Python合并相邻区间的实现方案

需求说明

我们需要对按区间起始值排序的元组列表,合并首尾相接或数值相邻的区间,示例效果如下:

输入示例:

my_array = [(1, 3), (3, 4), (4, 5), (5, 7), (10, 12), (12, 17), (21, 24)]

期望输出:

[(1, 7), (10, 17), (21, 24)]

如果输入列表没有提前排序,可先通过sorted(my_array, key=lambda x: x[0])完成排序再处理

目前Python和Numpy的标准库没有直接提供对应内置函数,你可以使用以下自定义函数实现该功能:

自定义实现代码

整数区间专用版本

import re
def magic_function(mylist):
    # 将列表转换为整数区间字符串格式
    intspan = ','.join([f'{int(a)}-{int(b)}' for (a,b) in mylist])
    # 合并相邻区间
    intspan = re.sub(r'\-(\d+)\,\1', '', intspan)
    # 转换回元组列表格式
    return [tuple(map(int, _.split('-'))) for _ in intspan.split(',')]

适配浮点数的通用版本

import re
def magic_function(mylist):
    # 将列表转换为浮点数区间字符串格式
    floatspan = ','.join([f'{float(a)}-{float(b)}' for (a,b) in mylist])
    # 合并相邻区间
    floatspan = re.sub(r'\-(\d+\.?\d+?)+\,\1', '', floatspan)
    # 转换回元组列表格式
    return [tuple(map(float, _.split('-'))) for _ in floatspan.split(',')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:45:04