我有一个lambda函数列表。让我们说这个
l = [lambda x:x**i for i in range(n)]
对于每一个我需要能够总结它们,所以我有这样的功能:
f = lambda x: x + x**2 + x**3 + ... + x**n
有什么办法吗?
编辑:我不清楚。我对这些功能一无所知。
答案 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函数列表,而是总结一个函数。假设您已定义x
和n
,则可以执行以下操作:
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))