In <[EMAIL PROTECTED]>, Josiah Manson wrote: > def make_polys(n): > """Make a list of polynomial functions up to order n. > """ > p = lambda x: 1 > polys = [p] > > for i in range(n): > polys.append(lambda x: polys[i](x)*x)
The `i` is the problem. It's not evaluated when the lambda *definition* is executed but when the lambda function is called. And then `i` is always == `n`. You have to explicitly bind it as default value in the lambda definition: polys.append(lambda x, i=i: polys[i](x)*x) Then it works. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list