Antoon Pardon <antoon.par...@rece.vub.ac.be>: > Personnaly I would prefer: > >>>> q = [(lambda i: lambda x: i * x)(i) for i in range(4)] >>>> q[0](1), q[3](1) > (0, 3) > > And this is where I ask whether it would be worth the effort to change > the behaviour of python.
Don't go there. Consider: q = [] n = 0 x = "hello" for i in range(4): def stepper(): global n n += 1 return i * x q.append(stepper) print(n) print(q[1]()) print(n) x = "there" print(q[3]()) print(n) which prints: 0 hellohellohello 1 theretherethere 2 after your change, you'd get: 0 hello 0 hellohellohello 0 > It also seems that people who try this for the first time are > surprised with what they get and seem to expect there list > comprehension to act as if they had written the second version. I might trip over that one, too. Still, nothing should be changed. Marko -- https://mail.python.org/mailman/listinfo/python-list