This is the solution I found, thanks to help on loop mechanics from juanpa.arrivillaga. I imagine it's not too efficient, for that, look to other answers; however, this works without excess libraries.
def cut_overlapping_ranges(ranges):
keep_ranges = []
temp_ranges = ranges.copy()
while True:
range_position = 0
if len(temp_ranges) == 0:
break
range_1 = temp_ranges[0]
lb = range_1[0]
ub = range_1[1]
keep_ranges.append(range_1)
temp_ranges.remove(range_1)
while True:
if len(temp_ranges) == 0:
break
try:
range_2 = temp_ranges[range_position]
if ((lb < range_2[0] < ub) or (lb < range_2[1] < ub)):
temp_ranges.remove(range_2)
else:
range_position += 1
except:
break
print(range)
return
input is
[[0.0023, 0.0033],[0.0025, 0.0035],[0.0029, 0.0039],[0.0022, 0.0032],[0.0017, 0.0027],[0.0031, 0.0041],[0.0032, 0.0042],[-0.0005, 0.0005],[0.0014, 0.0024],[-0.0002, 0.0008],[-0.0006,0.0004],[0.0012, 0.0022],[0.0013, 0.0023],[0.0008, 0.0018],[0.0011, 0.0021]]
output is
[[0.0023, 0.0033],[-0.0005, 0.0005],[0.0012, 0.0022]]