How can I clear a list of segments from nested segments (Python)

Question:

My respect, colleagues.
I have a list of segments which may include nested segments that should be deleted.

For example we have a list (or maybe other data structure) of tuples:

[(50, 60), (10, 20), (10, 40), (40, 60), (60, 80), (75, 95), (95, 100)]

Or maybe list of ranges:

[range(50, 60), range(10, 20), range(10, 40), range(40, 60), range(60, 80), range(75, 95), range(95, 100)]

The result should be:

[(10, 40), (40, 60), (60, 80), (75, 95), (95, 100)]

enter image description here

And I must delete all nested segments.

In addition, I am not allowed to use any libraries or even import‘s.

Actually, I’m confused, so I’ll be very grateful for any help.

Asked By: Ionnafan

||

Answers:

For each segment, you check if it is nested in one the others segments. If it is, you use the remove function.

segments = [(10, 40), (40, 60), (60, 80), (75, 95), (95, 100)]

segments_copy = segments.copy()

for seg_1 in segments_copy:
    for seg_2 in segments_copy:
        if seg_1 != seg_2 and seg_1[0] >= seg_2[0] and seg_1[1] <= seg_2[1]:
            segments.remove(seg_1)
Answered By: Henrique Andrade
Categories: questions Tags: , , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.