比方说,
(7, 10)和
(11, 13)结果为
(7, 13):
a = [(7, 10), (11, 13), (11, 15), (14, 20), (23, 39)]b = []for begin,end in sorted(a): if b and b[-1][1] >= begin - 1: b[-1] = (b[-1][0], end) else: b.append((begin, end))
b就是现在
[(7, 20), (23, 39)]
编辑 :
正如@CentAu正确通知的那样,
[(2,4), (1,6)]它将返回
(1,4)而不是
(1,6)。这是正确处理此情况的新版本:
a = [(7, 10), (11, 13), (11, 15), (14, 20), (23, 39)]b = []for begin,end in sorted(a): if b and b[-1][1] >= begin - 1: b[-1][1] = max(b[-1][1], end) else: b.append([begin, end])



