merge_ranges

merge_ranges(ranges: list[tuple[float | int]]) Generator[list[tuple[float]], None, None][source]

Merge overlapping and adjacent ranges and yield the merged ranges in order. The argument must be an iterable of pairs (start, stop).

Parameters:

ranges -- List of tuples of two numbers defining ranges

Returns:

Generator yielding tuples of merged ranges

>>> list(merge_ranges([(5,7), (3,5), (-1,3)]))
[(-1, 7)]
>>> list(merge_ranges([(5,6), (3,4), (1,2)]))
[(1, 2), (3, 4), (5, 6)]
>>> list(merge_ranges([]))
[]
  1. Gareth Rees 02/2013