在Python中合并区间并按升序排序的程序
假设我们有一些区间,每个区间用包含开始和结束元素的列表表示。例如,[[1,3],[2,6],[8,10],[15,18]]。我们希望将重叠的区间合并,并按升序排序。
我们可以这样做:
def merge(intervals):
# 如果区间列表为空则返回空列表
if not intervals:
return []
# 根据区间开始元素升序排序
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
for interval in intervals:
# 如果当前区间的开始元素小于等于上一个区间的结束元素,则它们重叠,需要合并
if interval[0] <= merged[-1][1]:
merged[-1][1] = max(merged[-1][1], interval[1])
# 如果它们不重叠,则将新的区间添加到合并列表中
else:
merged.append(interval)
return merged
让我们测试一下:
intervals = [[1,3],[2,6],[8,10],[15,18]]
print(merge(intervals))
# Output: [[1, 6], [8, 10], [15, 18]]
这个程序很简单明了。我们首先根据区间的开始元素升序排序,以确保我们在处理每个区间时不会错过任何可能的合并。然后我们循环每个区间,如果当前区间与合并列表中的最后一个区间重叠,则将其合并。否则,将其添加到合并列表中。
更多Python相关文章,请阅读:Python 教程
结论
这个程序可以有效地合并区间并按照升序排序。通过使用内置的sort函数和一个简单的循环,我们能够以简单而优雅的方式解决这个问题。
极客笔记