Is a merge interval function available?
Steve Holden
steve at holdenweb.com
Wed Feb 10 23:03:29 EST 2010
Nobody wrote:
> On Wed, 10 Feb 2010 15:23:42 -0800, Peng Yu wrote:
>
>> I'm wondering there is already a function in python library that can
>> merge intervals. For example, if I have the following intervals ('['
>> and ']' means closed interval as in
>> http://en.wikipedia.org/wiki/Interval_(mathematics)#Excluding_the_endpoints)
>>
>> [1, 3]
>> [2, 9]
>> [10,13]
>> [11,12]
>>
>> I want to get the following merged intervals.
>>
>> [1,9]
>> [10,13]
>>
>> Could somebody let me know if there is a function in the python
>> library?
>
> No, but try this:
>
> def merge(intervals):
> if not intervals:
> return []
> intervals = sorted(intervals, key = lambda x: x[0])
Since Python uses lexical sorting and the intervals are lists isn't the
key specification redundant here?
> result = []
> (a, b) = intervals[0]
> for (x, y) in intervals[1:]:
> if x <= b:
> b = max(b, y)
> else:
> result.append((a, b))
> (a, b) = (x, y)
> result.append((a, b))
> return result
>
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010 http://us.pycon.org/
Holden Web LLC http://www.holdenweb.com/
UPCOMING EVENTS: http://holdenweb.eventbrite.com/
More information about the Python-list
mailing list