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