Hello group, >>> 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 -- http://mail.python.org/mailman/listinfo/python-list