我知道用于在python中计算无限级数之和的代码。
但是当我必须跳一个特定的整数时,我总是会卡住。
例如-要计算该系列的总和-
expectation = nsum(lambda x: x*(1/2**(x+1)),[0,inf])
但是,如果我希望x取值4,7,10,13 ...,即间隔为3,那么代码应该是什么?
答案 0 :(得分:0)
使用lambda函数是否有充分的理由?它使您的代码可读性降低。 %运算符是能够消除列表空白的方法之一。
sum = 0
for x in range(4,100000,3):
x *= 1/2**(x+1)
sum += x
一种替代方法是制作一个数字列表,并使用列表位置获取列表中的所有第三项。例如:
l = list(range(10000))
l = l[::3]
如果您确实需要使用lambda函数进行尝试,可以尝试如下操作:
expectation = sum(map(lambda x: x*(1/2**(x+1)) if x%3==0 else 0,range(1000)))
map函数将范围1000的数字一一传递给lambda。仅当传递的数字可以由3划分(因此为3的步长)时,lambda函数才会执行。