lst=[]

for i in range(10): .... lst.append(eval("lambda:%i" % i))

.... lst[0]() 0 lst[1]() 1 lst[9]() 9 lst=[]

for i in range(10): .... exec "tmp = lambda:%i" % i # assignment is not expression

.... lst.append(tmp)

.... lst[0]() 0 lst[1]() 1 lst[9]() 9

and now the obvious one (as I thought at first)

lst=[]

for i in range(10): .... lst.append(lambda:i)

.... lst[0]() 9 i 9

I think I understand where the problem comes from

lambda:i seems not to be fully evalutated

it just binds object with name i and not the value of i

thus lst[0]() is not 0

are there other solutions to this problem

without use of eval or exec?

Regards, Daniel