如何从整个细分受众群中删除配对列表?

时间:2019-05-17 08:55:59

标签: python algorithm

鉴于我有一个距[A, B]的间隔(其中A, B是整数)和一个非重叠间隔的列表(C_i, D_i), i = 1..N(可以保证[A, B]包含(C_i, D_i), i = 1..N),目标是从(C_i, D_i), i = 1..N减去 [A, B]

A, B = 1, 10
intervals = [2, 3], [5, 6]
...
result = [[1, 1], [4, 4], [7, 10]]

numpy中是否有内置功能?还是我必须以蛮力行事?

2 个答案:

答案 0 :(得分:0)

在numpy中我对此一无所知,但是您不必使用蛮力。由于(C_i,D_i)间隔是不重叠的,因此可以对其进行排序,并且一旦排序,就可以对其进行迭代:

def remove_intervals(A, B, intervals):
    cur = A
    result = []
    for C, D in sorted(intervals):
        if cur < C:
            result.append([cur, C-1])
        cur = D+1
    if D < B:
        result.append([cur, B])
    return result

答案 1 :(得分:0)

python-intervals包。