[Tutor] Summing a list of numbers / writing small functions
Danny Yoo
dyoo@hkn.eecs.berkeley.edu
Fri Apr 11 14:07:01 2003
> > How can I simplify this lines:
> > > sum = 0
> > > myList = [1,2,3,4,5,6]
> > > for each in myList:
> > > sum += each
> >
> > Into shorter, more elegant line(s)?
>
> Although Albert has shown you how to do this with reduce() I don't
> actually think there is any need to shorten or make this more elegant.
>
> compare
> sum = reduce(operator.add, myList)
> with
> for x in myList: sum += x
>
> which is shorter? which is more elegant?
Hello!
I think both ways work perfectly well. The important thing, though, is to
see if we do this summation frequently. If so, it's probably worth it to
define a add_all() function to capture that idea of adding up elements in
a list.
We've seen two ways of doing it:
###
def add_all(myList):
sum = 0
for x in myList:
sum += x
return sum
###
and
###
def add_all(myList):
return reduce(operator.add, myList)
###
As soon as we have some sort of definition for summation --- as soon as we
give it a name --- we can use it as part of our language!
###
>>> add_all(range(10))
45
>>> add_all([2, 4, 6, 8]) + add_all([1, 3, 5, 7, 9])
45
###
add_all(), then, is a very elegant way of doing summations. *grin*
Hope this helps!