On Wed, 11 Jul 2012 08:43:11 +0200, Daniel Fetchinson wrote: >> funcs = [ lambda x: x**i for i in range( 5 ) ] >> print funcs[0]( 2 ) >> print funcs[1]( 2 ) >> print funcs[2]( 2 ) >> >> This gives me >> >> 16 16 16 >> >> When I was excepting >> >> 1 >> 2 >> 4 >> >> Does anyone know why? > > And more importantly, what's the simplest way to achieve the latter? :)
Having read Steve's explanation in the other thread (which I think has finally flipped the light switch on lambda for me) it only requires a minor change funcs=[ lambda x,y=i:x**y for i in range(5) ] although I cant actually think why this construct would be needed in practice, how are you actually using it -- * Simunye is so happy she has her mothers gene's <Dellaran> you better give them back before she misses them! -- http://mail.python.org/mailman/listinfo/python-list