faster since it iterates once over the list?

doesnt sum first construct the list then sum it?

-----------------------

reduce with named function: 37.9864357062>>================================ RESTART ================================

reduce with nested, named function: 39.4710288598

reduce with lambda: 39.2463927678

sum comprehension: 25.9530121845

reduce with named function: 36.4529584067>>================================ RESTART ================================

reduce with nested, named function: 37.6278529813

reduce with lambda: 38.2629448715

sum comprehension: 26.0197561422

>>>

from timeit import Timer

def add(x,y):

return x+y

def rednamed(lst):

return reduce(add, lst)

def rednn(lst):

def add2(x,y):

return x+y

return reduce(add2, lst)

def redlambda(lst):

return reduce(lambda x,y:x+y, lst)

def com(lst):

return sum(x for x in lst)

s = xrange(101)

t1 = Timer('rednamed(s)', 'from __main__ import rednamed, s')

t2 = Timer('rednn(s)', 'from __main__ import rednn, s')

t3 = Timer('redlambda(s)', 'from __main__ import redlambda, s')

t4 = Timer('com(s)', 'from __main__ import com, s')

print "reduce with named function: ", t1.timeit()

print "reduce with nested, named function: ", t2.timeit()

print "reduce with lambda: ", t3.timeit()

print "sum comprehension: ", t4.timeit()

---------------------------------------

also, using range instead of xrange doesnt seem to generate a

performance-penalty:

reduce with named function: 36.7560729087>>>

reduce with nested, named function: 38.5393266463

reduce with lambda: 38.3852953378

sum comprehension: 27.9001007111

>>>