[Python-ideas] Why does `sum` use a default for the `start` parameter?
MRAB
python at mrabarnett.plus.com
Sat Dec 5 17:43:15 CET 2009
Ram Rachum wrote:
> I noticed that `sum` tries to add zero to your iterable. Why? Why not
> just skip adding any start value if none is specified?
>
> This current behavior is preventing me from using `sum` to add up a
> bunch of non-number objects.
>
Sometimes you might find that the list you're summing is empty. Because
'sum' is most often used with numbers, the default sum of a list is 0.
If you want to sum a list of non-numbers, provide a suitable start
value. For example, to sum a list of lists a suitable start value is []:
>>> sum([[0, 1], [2, 3]], [])
[0, 1, 2, 3]
I agree that it would be nice if the start value could just be omitted,
but then what should 'sum' return if the list is empty?
If sum([1, 2]) returned 3, then I'd want sum([]) to return 0.
If sum([[1], [2]]) returned [1, 2], then I'd want sum([]) to return [].
Unfortunately, I can't have it both ways.
More information about the Python-ideas
mailing list