How to merge overlapping ranges (start,end),(start,end) in Python

1 Answer

0 votes
def merge_ranges(ranges):
    ranges = sorted(ranges, key=lambda x: x[0])
    merged = []

    for start, end in ranges:
        if not merged or start > merged[-1][1]:
            merged.append([start, end])
        else:
            merged[-1][1] = max(merged[-1][1], end)

    return [tuple(r) for r in merged]


ranges = [(302, 447), (488, 489), (121, 234), (200, 421), (140, 354)]

print(merge_ranges(ranges))



'''
run:

[(121, 447), (488, 489)]

'''

 



answered Jan 26 by avibootz
...