在Python中合并间隔

时间:2017-04-12 07:43:25

标签: python

我是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)。

我不知道该怎么办呢?

有人可以帮我指点方向吗?

提前致谢。

2 个答案:

答案 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), []))