Скажем, у меня есть список списков с индексами [[start, end], [start1, end1], [start2, end2]]
.
Как например:
[[0, 133], [78, 100], [25, 30]]
.
Как мне получить проверку на совпадение между списками и удалить список с большей длиной каждый раз? Итак:
>>> list = [[0, 133], [78, 100], [25, 30]]
>>> foo(list)
[[78, 100], [25, 30]]
Это то, что я пытался сделать до сих пор:
def cleanup_list(list):
i = 0
c = 0
x = list[:]
end = len(x)
while i < end-1:
for n in range(x[i][0], x[i][1]):
if n in range(x[i+1][0], x[i+1][1]):
list.remove(max(x[i], x[i+1]))
i +=1
return list
Но в дополнение к тому, чтобы быть свернутым, он не работает должным образом:
>>>cleanup_list([[0,100],[9,10],[12,90]])
[[0, 100], [12, 90]]
Любая помощь будет оценена!
ИЗМЕНИТЬ:
Другие примеры:
>>>a = [[0, 100], [4, 20], [30, 35], [30, 78]]
>>>foo(a)
[[4, 20], [30, 35]]
>>>b = [[30, 70], [25, 40]]
>>>foo(b)
[[25, 40]]
В основном я пытаюсь удалить все самые длинные списки, которые перекрываются с другим списком. В этом случае мне не нужно беспокоиться о том, что списки имеют равную длину.
Спасибо!!