返回函数列表仅返回最后一个函数

时间:2014-07-25 11:49:51

标签: python

考虑以下代码(详情如下):

def add(a):
    def f(x):
        return x+a
    return f

def times(a,b):
    return a*b

def adlist(A,B):
    add_a = map(add,A)
    add_b = map(add,B)

    return [ lambda x : times(f(x),g(x)) for (f,g) in zip(add_a,add_b)]

(f,g) = adlist([0,1],[0,1])

我希望此时f(x)= x * x和g(x)=(x + 1)*(x + 1)但是

print f(0) # 1
print g(0) # 1 

事实上,f(x)= g(x)=(x + 1)*(x + 1)。

问题:为什么会这样?怎么解决? (鉴于我无法修改函数addtimes。)


详细信息:考虑排序f(x)=(x + a)*(x + b)的函数。在python中,很容易编写一个函数,它将a和b作为输入并返回函数f。

然而,我需要的是更复杂一点,我需要一些东西,需要列表A = [a1,...]和B = [b1,...]并返回相应的函数列表[f1 ,. ..]其中f1(x)=(x + a1)*(x + a2)。实际的功能比加法和乘法更复杂。我上面的尝试似乎不起作用。

0 个答案:

没有答案