我很了解函数式编程。我想创建一个函数列表,每个函数可以选择列表中的不同元素。我已经将我的问题简化为一个简单的示例。肯定这是Python的一个bug:
fun_list = []
for i in range(5):
def fun(e):
return e[i]
fun_list.append(fun)
mylist = range(10)
print([f(mylist) for f in fun_list])
"显然"它应该返回[0,1,2,3,4]。但它却返回[4, 4, 4, 4, 4]。我如何强制Python做正确的事情?(这之前没有注意到吗?还是我太蠢了?)
这是Python 3.4.0(默认,Mar 25 2014,11:07:05)
谢谢, David
fun
运行时,i的值为4。当您调用函数时,而不是定义函数时,行return e[i]
会运行。 - Alex