Mensanator wrote:
On Sep 10, 5:36 pm, Terry Reedy <[EMAIL PROTECTED]> wrote:

Sum(s) replaces reduce(lambda x,y: x+y, s, 0), which was thought to be
the most common use of reduce.  Sum(s,start) replaces the much less
common reduce(lambda x,y: x+y, s, start).

Reduce(S, s), where S = sum function, raises an exception on empty s.
So use that and you are no worse off than before.

What am I doing wrong?
>>>> S = sum
[snip]

Taking me too literally out of context. I meant the sum_of_2 function already given in the example above, as you eventually tried.

def S(x,y): return x+y

Sorry for the confusion.

...
reduce(lambda x,y:x+y,s)
6

s=[]
reduce(lambda x,y:x+y,s)
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    reduce(lambda x,y:x+y,s)
TypeError: reduce() of empty sequence with no initial value

These two are exactly what I meant.

This is supposed to happen. But doesn't reduce(S,s) work
when s isn't empty?

It did. You got 6 above. The built-in 'sum' takes an iterable, not a pair of numbers.

tjr

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to