我是Python编程的新手,遇到了一个问题陈述,我不知道如何解决。 我有四行输入:
0 1
2 4
6 7
3 5
要接受这4行输入,我可以执行以下操作:
for i in range(4):
a,b = list(map(int,input().split(' ')))
我应该将间隔合并到(输出):
0 1
2 5
6 7
间隔(2,4)和(3,5)它们应合并为一个(2,5)。
我不知道该怎么办呢?
有人可以帮我指点方向吗?
提前致谢。
答案 0 :(得分:2)
如果您正在寻找处理间隔算术的Python库,请考虑python-interval。免责声明:我是该图书馆的维护者。
import intervals as I
interval = I.empty()
for i, j in [(0, 1), (2, 4), (6, 7), (3, 5)]:
interval = interval | I.closed(i, j)
print(interval)
结果
[0,1] | [2,5] | [6,7]
有关详情,请参阅documentation。
答案 1 :(得分:0)
试试这个
from functools import reduce
# inp = [(0,1),(2,9),(6,7),(3,5)]
inp = [(0,1),(2,4),(6,7),(3,5)]
print(inp)
def merge(li,item):
if li:
if li[-1][1] >= item[0]:
li[-1] = li[-1][0], max(li[-1][1],item[1])
return li
li.append(item)
return li
print(reduce(merge, sorted(inp), []))