我正在try 优化Python中的一个函数,该函数合并重叠的区间.给出一个区间列表,其中每个区间被表示为一个元组(开始、结束),我需要合并所有重叠的区间,并返回覆盖输入列表中所有区间的非重叠区间的列表.
例如,给定输入列表间隔=[(1,3),(2,6),(8,10),(15,18)],输出应为[(1,6),(8,10),(15,18)].
以下是我try 过的方法:
def merge_intervals(intervals):
sorted_by_lower_bound = sorted(intervals, key=lambda x: x[0])
merged = []
for higher in sorted_by_lower_bound:
if not merged or merged[-1][1] < higher[0]:
merged.append(higher)
else:
merged[-1] = (merged[-1][0], max(merged[-1][1], higher[1]))
return merged
print(merge_intervals([(1, 3), (2, 6), (8, 10), (15, 18)]))
这个函数似乎工作正常,但我不确定这是最有效的方式还是最有毕达式风格的方式.我希望找到一个内置的函数或更直接的方法来实现这一点,可能是使用一个Python标准库.
问:有没有一种更有效或更惯用的方法来合并Python中的区间,比如使用库函数或不同的算法来执行得更好,尤其是对于大量的区间?