Velocity Reviews > Re: calculation on lists

# Re: calculation on lists

Tim Chase
Guest
Posts: n/a

 12-19-2012
On 12/19/12 09:24, loïc Lauréote wrote:

>> is there a tool to calculate on list ?
>>
>> something like :
>>
>>> a= [1,1,1,1]
>>> b = [5,9,8,4]
>>> c = a+b*a
>>> print c
>>> [6,10,9,5]

>>
>> Thx
>>
>> ======
>>
>> Hi,
>> for such simpler cases, you may try list comprehensions and probably
>> the zip(...) function
>>
>>>>> [a+b*a for a,b in zip([1,1,1,1], [5,9,8,4])]

>> [6, 10, 9, 5]

> Thank for your answer,
>
> I found something allowing to avoid loops. I use operator
> overloading.

This is a pretty obvious case of "don't duplicate others' effort".
With stock python, Vlastimil's list-comprehension using zip() is the
canonical answer. I'm pretty sure it's far faster than your class,
in addition to feeling far more pythonic.

If you happen to have numpy installed, Vlastimil's answer there
already does what you want, but has the added benefits of

1) being heavily tested

2) having core parts written in C for efficiency

3) having a complete intuitive interface, rather than yours which
may have issues (such as not having left-vs-right issues:

a * 5
5 * a

should produce the same results)

4) both the list-comprehension version and the numpy version aren't
limited to 2-element vectors like your code, but can handle
N-element vectors.

-tkc

 Thread Tools

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Vlastimil Brom Python 0 12-19-2012 05:24 PM loïc Lauréote Python 0 12-19-2012 03:24 PM Vlastimil Brom Python 0 12-19-2012 12:38 PM loïc Lauréote Python 0 12-19-2012 12:25 PM =?UTF-8?B?w4FuZ2VsIEd1dGnDqXJyZXogUm9kcsOtZ3Vleg==?= Python 5 05-15-2006 11:47 AM

Advertisments