📅  最后修改于: 2023-12-03 15:10:43.499000             🧑  作者: Mango
在开发过程中,经常会涉及到查找两个列表给定的区间的交集。这个功能可以用于数据分析,例如查找两个时间段内的重叠部分。
下面是一个Python程序示例,用于查找两个列表的区间交集:
def intersect_intervals(intervals1, intervals2):
result = []
i, j = 0, 0
while i < len(intervals1) and j < len(intervals2):
start1, end1 = intervals1[i]
start2, end2 = intervals2[j]
if end1 < start2:
i += 1
elif end2 < start1:
j += 1
else:
result.append((max(start1, start2), min(end1, end2)))
if end1 < end2:
i += 1
else:
j += 1
return result
这个函数接受两个参数 intervals1
和 intervals2
,每个参数是一个由 (start, end)
元组表示的区间列表。 返回的结果是一个由这两个列表的区间交集组成的新列表。
算法的思想是将两个列表的区间逐个进行比较,一旦发现有重叠的部分,就将其加入到结果列表中。具体实现的细节见代码注释。
下面是一个示例使用方法:
intervals1 = [(1, 3), (8, 10), (15, 18)]
intervals2 = [(2, 6), (9, 12), (16, 20)]
result = intersect_intervals(intervals1, intervals2)
print(result)
输出的结果是:
[(2, 3), (9, 10), (16, 18)]
这表示两个列表中的区间 (2, 3)
, (9, 10)
和 (16, 18)
是它们的交集部分。
以上就是查找两个列表给定的区间的交集的一个Python示例。