python - 查找两个列表之间的重叠间隔
问题描述
给定下面的两个列表,我想找到列表中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
,而如果我已经在一个更大的位置,我会知道我不会找到与第一个窗口。有没有更有效的方法来编码这个问题?
谢谢!
解决方案
你可以记住你的位置:
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
推荐阅读
- java - 在现有行中创建单元格时出现 Java Apache-POI 空指针异常
- c - 寻找更好的字符串搜索算法
- jquery - 动态追加和删除行,使表单提交
- rust - 从 Ref Counted 次的 Vec 克隆到对象的 vec
- javascript - 动态生成的 opengraph 元内容图像宽度/高度
- function - Vue Js我应该把泛型函数放在哪里
- java - Firefox 不显示 .png 图像
- c++ - 如何通过显式实例化来防止递归模板实例化
- mongodb - 计算嵌入文档中字段的总和
- powerbuilder - powerbuilder appeon 移动网络。如何确定 url 链接返回 404