我想从Python中的常量列表创建lambda对象列表;例如:
listOfNumbers = [1,2,3,4,5]
square = lambda x: x * x
listOfLambdas = [lambda: square(i) for i in listOfNumbers]
但是,当我运行它们时,这将创建一个lambda对象列表:
for f in listOfLambdas:
print f(),
我希望它会打印
1 4 9 16 25
而是打印:
25 25 25 25 25
似乎所有lambda都被赋予了错误的参数。我做错了什么,有办法解决吗?我认为我使用的是Python 2.4。
编辑:更多尝试的事情,例如这样:
listOfLambdas = []
for num in listOfNumbers:
action = lambda: square(num)
listOfLambdas.append(action)
print action()
打印从1到25的期望平方,然后使用之前的print语句:
for f in listOfLambdas:
print f(),
仍然给我所有25的。现有的lambda对象如何在这两个打印调用之间改变?
潇湘沐
有只小跳蛙
相关分类