Profiling, sum-comprehension vs reduce
wegwerp at gmail.com
Sat Sep 13 18:00:12 CEST 2008
On Sep 13, 10:06 am, cnb <circularf... at yahoo.se> wrote:
> This must be because of implementation right? Shouldn't reduce be
> faster since it iterates once over the list?
> doesnt sum first construct the list then sum it?
No, sum also iterates the sequence just once and doesn't create a
list. It is probably implemented similar to
def sum(sequence, start=0):
it = iter(sequence)
total = start
for i in it:
total += i
but then implemented in C for speed. Reduce is probably implemented
pretty similar, but then with a random function instead of addition.
Make sure that you understand the difference between generator
expression and list comprehension, and that [f(x) for x in something]
is (almost) equal to list(f(x) for x in something), so you can emulate
a LC by using the list constructor on the equivalent GE.
More information about the Python-list