Overlap in python

Marcus Wanner marcusw at cox.net
Tue Aug 4 20:31:49 CEST 2009


On Aug 4, 2:15 pm, Jay Bird <jay.bird0... at gmail.com> wrote:
> Hi everyone,
>
> I've been trying to figure out a simple algorithm on how to combine a
> list of parts that have 1D locations that overlap into a non-
> overlapping list.  For example, here would be my input:
>
> part name   location
> a                  5-9
> b                  7-10
> c                  3-6
> d                  15-20
> e                  18-23
>
> And here is what I need for an output:
> part name   location
> c.a.b            3-10
> d.e               15-23
>
> I've tried various methods, which all fail.  Does anyone have an idea
> how to do this?
>
> Thank you very much!
> Jay

Just take all the values, put them in a list, and use min() and max().
For example:

import string

def makelist(values):
    values = string.replace(values, ' ', '')
    listofvaluepairs = string.split(values, ',')
    listofvalues = []
    for pair in listofvaluepairs:
        twovalues = string.split(pair, '-')
        listofvalues.append(int(twovalues[0]))
        listofvalues.append(int(twovalues[1]))
    return listofvalues

values = '5-9, 7-10, 3-6'
values = makelist(values)
print('Values: %d-%d' %(min(values), max(values)) )

Marcus



More information about the Python-list mailing list