インデックスを持つリストのリストがあるとします[[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]]
基本的に、別のリストと重複する最長のリストをすべて削除しようとしています。この場合、リストの長さが等しいことを心配する必要はありません。
ありがとう!!