gpt4 book ai didi

python - 多个范围的并集

转载 作者:太空狗 更新时间:2023-10-29 17:17:02 26 4
gpt4 key购买 nike

我有这些范围:

7,10
11,13
11,15
14,20
23,39

我需要执行重叠范围的并集以给出不重叠的范围,因此在示例中:

7,20
23,39

我在 Ruby 中完成了此操作,我将范围的开始和结束插入数组并对它们进行排序,然后执行重叠范围的并集。在 Python 中有什么快速的方法可以做到这一点?

最佳答案

假设 (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])

关于python - 多个范围的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com