[Python-Dev] Fwd: summing a bunch of numbers (or "whatevers")

Kevin Jacobs jacobs@penguin.theopalgroup.com
Mon, 21 Apr 2003 08:12:25 -0400 (EDT)


On Mon, 21 Apr 2003, Alex Martelli wrote:
> On Monday 21 April 2003 10:52 am, Alex Martelli wrote:
>    ...
> > Aye aye, cap'n -- now that youve crossed the i's and dotted the t's
> > I'll arrange the complete patch with tests and docs and submit it
> > forthwith.
> 
> Done -- patch 724936 on SF, assigned to gvanrossum with priority 7
> as you said to do for patches meant for 2.3beta1.

Just to make sure I understand the desired semantics, is this Python
implementation of sum() accurate:

def sum(l):
    '''sum(sequence) -> value

       Returns the sum of a non-empty sequence of numbers (or other objects
       that can be added to each other, such as strings, lists, tuples...).'''

    it   = iter(l)
    next = it.next

    try:
        first = next()
    except StopIteration:
        raise ValueError, 'sum() arg is an empty sequence'

    # Special-case sequences of strings, for speed 
    if isinstance(first, str):
        try:
            return first + ''.join(it)
        except:
            pass

    try:
        while 1:
            first += next()

    except StopIteration:
        return first

The speed optimization for string sequences is slightly different, but
exposes the same fast-path for the vast majority of likely inputs.

-Kevin

-- 
--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com