wheres pythonmonks wrote:
Funny... just spent some time with timeit:
I wonder why I am passing in strings if the callback overhead is so light...
More funny: it looks like inline (not passed in) lambdas can cause
python to be more efficient!
import random
d = (['A','B'][random.randint(0,1)],x,random.gauss(0,1)) for x in
xrange(0,1000000) ]
def A1(): j = lambda t: (t[2]*t[1],t[2]**2+5) for t in d ]
def A2(): j = (t[2]*t[1],t[2]**2+5) for t in d ]
But A1() gives a different result. It builds a list of function
objects. It doesn't actually do any of those multiplies. In fact, I
don't even think it would get the same answers if you then looped
through it, calling the functions it stored.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list