使用此代码:
def problem():
PHI_LIST_0 = [lambda a, b: a+b+u for u in xrange(3)]
PHI_LIST_1 = [lambda a, b: a+b+0, lambda a, b: a+b+1, lambda a, b: a+b+2]
for phi in PHI_LIST_0: print "v0:", phi(1,1)
print
for phi in PHI_LIST_1: print "v1:", phi(1,1)
if __name__ == '__main__':
problem()
我得到:
v0: 4
v0: 4
v0: 4
v1: 2
v1: 3
v1: 4
预期的行为是最后一个行为,带有 PHI_LIST_1。我想我理解为什么结果与 PHI_LIST_0 不同:可能是因为 Python 在评估 phi(1,1) 时使用了最后一个“u”,即 2。
但是我想以定义 PHI_LIST_0 的方式声明一个函数列表,并带有列表理解。有人知道我该怎么做吗?