Questa versione non inserisce l'ultimo intervallo spurio da 0 eventi attivi:

s1ev = [(1723, 18550), (100000, 101000)]
s2ev = [(9154, 9307), (9340, 10442), (87361, 98214)]

starts = sorted(s[0] for s in s1ev + s2ev)
ends = sorted(s[1] for s in s1ev + s2ev)

actives = [[] for x in range(3)]
actives[0] = [[0, 0]]

actives_count = 0
while ends:
    if starts and starts[0] < ends[0]:
        x = starts.pop(0)
        inc = 1
    else:
        x = ends.pop(0)
        inc = -1
    actives[actives_count][-1][1] = x
    actives_count += inc
    if ends:
        actives[actives_count].append([x, 0])


-- 
http://thinkcode.tv - Prossimamente su questi schermi
http://beri.it - Blog di una testina di vitello
http://stacktrace.it - Aperiodico di resistenza informatica
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a