lambda trouble
Darabos Daniel
cyhawk at sch.bme.hu
Fri Mar 19 11:48:32 EST 2004
Hi!
I was doing something like this:
>>> def p( x ):
... print x
...
>>> l = []
>>> for i in range( 5 ):
... l.append( lambda: p( i ) )
...
>>> for k in l:
... k()
...
4
4
4
4
4
And it surprised me a little. I was expecting to see 0, 1, 2, 3, 4.
After some brainwork I now kind of understand what happens and I even
found a solution like this:
>>> def mylambda( fn, *args ):
... return lambda: apply( fn, args )
...
>>> l = []
>>> for i in range( 5 ):
... l.append( mylambda( p, i ) )
...
>>> for k in l:
... k()
...
0
1
2
3
4
But I still feel a bit unsatisfied. Do you have some advice for me?
Cheers,
Daniel
More information about the Python-list
mailing list