list problem...

Rog rog at pynguins.com
Wed Sep 29 23:50:56 CEST 2010


On Wed, 29 Sep 2010 05:52:32 -0700, bruno.desthuilliers at gmail.com wrote:

> On 29 sep, 14:17, Steven D'Aprano <st... at REMOVE-THIS- cybersource.com.au>
> wrote:
>> On Tue, 28 Sep 2010 20:11:51 +0100, Rog wrote:
>> > On Tue, 28 Sep 2010 11:59:08 -0700, geremy condra wrote:
>>
>> >> On Tue, Sep 28, 2010 at 11:44 AM, Rog <r... at pynguins.com> wrote:
>> >>> Hi all,
>> >>> Have been grappling with a list problem for hours... a = [2, 3, 4,
>> >>> 5,.....]
>> >>> b = [4, 8, 2, 6,.....]
>> >>> Basicly I am trying to place a[0], b[0] in a seperate list IF a[2]
>> >>> and b[2] is present.
>> >>> I have tried sets, zip etc with no success. I am tackling Euler
>> >>> projects with Python 3.1, with minimal knowledge, and having to
>> >>> tackle the language as I progress. Enjoyable frustration  :)
>>
>> >> I'm not clear on what your actual problem is, could you restate it?
>>
>> >> It sounds like you want to copy the ith element out of a and b into
>> >> some other list- call it c- when the (i+2)th element meets some
>> >> condition. What's the condition?
>>
>> >> Geremy Condra
>>
>> > The condition is that the i-th element is inverted, but not equal. eg
>> > 4,2 - 2,4 , 34,5 - 5,34 etc.
>> > Hope that is clearer.
>>
>> Clear as mud.
>>
>> Perhaps you should given an example. Given input
>>
>> a = [2, 3, 4, 5, 6, 7]
>> b = [4, 8, 2, 6, 10, 42]
>>
>> what output are you expecting,
> 
> AFAICT, the OP expects [2, 4] in this case, but it's not clear what he'd
> expect for let's say:
> 
> a = [2, 3, 21, 4, 5, 6, 7]
> b = [4, 8, 22, 2, 6, 10, 42]
> 
> (the 'reversed' pair is at i+3, not i+2)
> 
> or
> 
> a = [0, 2, 3, 4, 5, 6, 7]
> b = [3, 4, 8, 2, 6, 10, 42]
> 
> (the first pair is at pos 1, not 0)
> 
> or
> 
> a = [2, 3, 4, 8, 6, 7]
> b = [4, 8, 2, 3, 10, 42]
> 
> (there's a second 'non-reversed/reversed' match at positions resp. 1 & 3)


It is true that I would have needed any 'non-reversed/reversed' pairs,
these would have been the amicable pairs I was looking for.
The method to recognise them eluded me. Eyes are not good enough  :)
I have now joined Python-List and will follow the correct route.
I have used a method suggested that has made the problem redundant,
though it will bug me from now on.

g = []

def divsum(n):
    return sum(i for i in range(1, n) if not n % i)

for x in range(10000, 2, -1):
    c = divsum(x)
    v = divsum(c)
    if v == x and v != c:
        g.append(divsum(x))
    else:
        continue

print(sum(g)) 

-- 
Rog
http://www.rog.pynguins.com



More information about the Python-list mailing list