I will get ranges in regular floats, and it should extend to datetime quite easily ...
Suppose the data is a sequence of [start, end]
lists. If it is not in this format, you can easily convert it to this format.
. , , i + 1
i
, i
, .
. , . , , . , :
def get_collapsed_ranges(ranges):
ranges = iter(sorted(ranges))
current_range = next(ranges)
for start, end in ranges:
if start > current_range[1]:
yield current_range
current_range = [start, end]
elif end > current_range[1]:
current_range[1] = end
yield current_range
, , , :
>>> list(get_collapsed_ranges([[0,3], [2,5], [4,5], [1,6], [8,10]]))
[[0, 6], [8, 10]]
, , , .