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

Reply via email to