enzo michelangeli <enzom...@gmail.com> writes: > Let's suppose I want to create a list of n functions of a single > argument, returning the sum between argument and index in the list, so > that e.g.: > > f[0](10) will return 10 > f[3](12) will return 15 > > ...and so on. I had naively though of coding: > > f = [lambda x: x+j for j in range(n)] > > Unfortunately, each function in the list f[]() behaves as a closure, > and f[k](p) does NOT return p+k but p+j (for whatever value j has at > the moment: typically n, the last value assumed by j in the list > comprehension loop). > > Is there a way of achieving my goal? (Of course, n is not a constant > known in advance, so I can't manually unroll the loop.) >
class Foo(object): def __init__(self, pos): self.pos = pos def __call__(self, arg): return self.pos + arg f = [Foo(x) for x in range(10)] -- http://mail.python.org/mailman/listinfo/python-list