[EMAIL PROTECTED] wrote:
Empty Python lists [] don't know the type of the items it will
contain, so this sounds strange:

sum([])
0

Because that [] may be an empty sequence of someobject:

You are right in that sum could be used to sum arbitrary objects. However, in 99.99% of the cases, you will be summing numerical values. When adding real numbers, the neutral element is zero. ( X + 0 = X) It is very logical to return zero for empty sequences.

Same way, if we would have a prod() function, it should return one for empty sequences because X*1 = X. The neutral element for this operation is one.

Of course this is not good for summing other types of objects. But how clumsy would it be to use

sum( L +[0] )

or

if L:
value = sum(L)
else:
value = 0

instead of sum(L).

Once again, this is what sum() is used for in most cases, so this behavior is the "expected" one.

Another argument to convince you: the sum() function in SQL for empty row sets returns zero in most relational databases.

But of course it could have been implemented in a different way... I believe that there have been excessive discussions about this decision, and the current implementation is very good, if not the best.

Best,

Laszlo



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

Reply via email to