Overlap in python
Marcus Wanner
marcusw at cox.net
Tue Aug 4 14:55:22 EDT 2009
On 8/4/2009 2:46 PM, Ann wrote:
> On Aug 4, 11:31 am, Marcus Wanner <marc... at cox.net> wrote:
>> 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
>
> Thank you for your help, this is a very nice program but it does not
> address the issue that I have values that do not overlap, for example
> 'c' and 'd' do not overlap in the above example and thus I would not
> want to output 3-20 but the individual positions instead. In
> addition, my inputs are not ordered from smallest to largest, thus I
> could have a situation where a=5-9, b=15-20, c=7-10, etc., and I would
> still want an output of: a.c = 5-10, b=15-20. I apologize for the
> complication.
>
> Thank you again!
>
> Jay
That would be a bit more complicated...you might try using tuples of
values in a list, or writing your own class for the data handling.
Unfortunately that's not something I can just sit down and code in 5
minutes, it would take some careful thought and planning.
Marcus
More information about the Python-list
mailing list