如果我必须添加一个以3为间隔的值的系列,那么python中的代码是什么

时间:2018-11-05 08:04:44

标签: python math

我知道用于在python中计算无限级数之和的代码。
但是当我必须跳一个特定的整数时,我总是会卡住。
例如-要计算该系列的总和-

expectation = nsum(lambda x: x*(1/2**(x+1)),[0,inf])

但是,如果我希望x取值4,7,10,13 ...,即间隔为3,那么代码应该是什么?

1 个答案:

答案 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函数才会执行。