n个lambda函数的总和

时间:2016-06-21 12:26:43

标签: python python-3.x

我有一个lambda函数列表。让我们说这个

l = [lambda x:x**i for i in range(n)]

对于每一个我需要能够总结它们,所以我有这样的功能:

f = lambda x: x + x**2 + x**3 + ... + x**n

有什么办法吗?

编辑:我不清楚。我对这些功能一无所知。

5 个答案:

答案 0 :(得分:3)

这是您正在寻找的解决方案吗?

Python 3.x:

n = 5
g = lambda y: sum(  f(y) for f in (lambda x: x**i for i in range(n))  )
print(g(5)) # 781

Python 2.x:

n = 5
g = lambda y: sum(  f(y) for f in (lambda x: x**i for i in xrange(n))  )
print g(5) # 781

答案 1 :(得分:3)

如果您指的是有限总和,最多x**n,请使用数学快捷键

f = lambda x: (x**(n+1) - 1) / (x - 1) if x != 1 else n

答案 2 :(得分:2)

f = lambda x,n: sum( x**i for i in range(n) )

print f(3,4)

>> 40

答案 3 :(得分:0)

最简单的方法是避免创建lambda函数列表,而是总结一个函数。假设您已定义xn,则可以执行以下操作:

f = lambda x, i: x**i
sum(f(x, i) for i in range(n))

在您的原始示例中,您实际上已经创建了一个闭包,因此您的lambda函数不会按照您的想法执行。相反,它们都是相同的,因为它们都在闭包中使用i的最终值。那肯定不是你想要的。

答案 4 :(得分:0)

n=5  
xpower=[]  
for i in range(n):  
    xpower.insert(i, i+1)  
    print(i,xpower)  
f = lambda x, xpower: sum(x**xpower[i] for i in range(len(xpower)))  
print("Example with n=5, x=2:"," ", f(2,xpower))