newbie: working iwth list of tuples

John Bauman john at baumanfamily.com
Sun Jan 29 03:07:39 EST 2006


"Paul Rubin" <http://phr.cx@NOSPAM.invalid> wrote in message 
news:7xoe1vtu68.fsf at ruckus.brouhaha.com...
> "falcon" <shahbazc at gmail.com> writes:
>> I forgot to add that I passing a tuple of functions to the reduce
>> function but apparently that is not allowed.  My guess was that a tuple
>> made up of individual (simple) functions might be easier to manipulate
>> programatically than a function which has to know the structure of a
>> list.
>
> Python really doesn't support this style all that well.  Try Haskell.
> See also the SICP book, which uses Scheme.
>
>> (My test code)
>> x=[('a',1),('a',1),('a',3),('b',1),('b',2),('c',2),('c',3),('c',4)]
>> reduce((lambda x,y: x+y,lambda x,y: x+y),x)
>
> I can't even tell what you're trying to do there.
I think that this is what he wants.
def zipfunc(fun):
    def runfun(*args):
        return tuple(x(*y) for x,y in zip(fun,zip(*args)))
    return runfun

Use this as:
x=[('a',1),('a',1),('a',3),('b',1),('b',2),('c',2),('c',3),('c',4)]
reduce(zipfunc((lambda x,y: x+y,lambda x,y: x+y)),x)
I think he wants the apply the first function in the tuple to the first 
element in every tuple, and likewise the second, third, etc. 





More information about the Python-list mailing list