首页 > 解决方案 > 查找两个列表之间的重叠间隔

问题描述

给定下面的两个列表,我想找到列表中overlap_list每个间隔内的所有间隔intervals

intervals = [[0, 100000], [100000, 200000]]
overlap_list = [[1000, 41095], [61070, 65414], [86384, 124015], [131226, 150523]]

这是我的解决方案:

for element in overlap_list:
    start = element[0]
    end = element[1]
    for window in intervals:
        if start > window[0] and end < window[1]:
            print(window, start, end)

这个解决方案的问题是,对于 中的每个元素,每次循环运行时,我都会遍历列表overlap_list中的所有窗口intervals,而如果我已经在一个更大的位置,我会知道我不会找到与第一个窗口。有没有更有效的方法来编码这个问题?

谢谢!

标签: pythonlist

解决方案


你可以记住你的位置:

position = 0

for element in overlap_list:
    start = element[0]
    end = element[1]
    for window in intervals[position:]:
        if start > window[0] and end < window[1]:
            print(window, start, end)
        elif end > window[1]:
            position += 1

推荐阅读