我上面有一个等式,我想计算红色下划线的总和,[ρ0,ρ1,ρ2,...,ρN]是一个开始的列表。
for循环肯定可以解决问题。但我想知道是否有更简洁的pythonic风格。 我尝试了reduce函数,但它似乎只适用于列表的直接求和或乘法。如上所示,求和的方法是什么?
答案 0 :(得分:3)
我认为你在寻找的是:
sum((x-y)**2 for (x,y) in izip(a, a[1:]))
表示数组a
izip(a, a[1:])
允许您同时访问阵列的第i和第i + 1个元素。
答案 1 :(得分:1)
为此使用numpy
可能会更好,但在纯python中,您可以对生成器表达式求和。 e.g。
>>> sum(i**2 for i in range(10))
285
对于第二个学期,只需嵌套求和:
>>> sum(sum(i*j for i in range(10)) for j in range(10))
2025
我的i*j
术语是你计算rho差异和余弦项的乘积的函数。
答案 2 :(得分:1)
或者你可以尝试编写一个递归函数
def listsum(numList):
if len(numList) == 2:
return math.pow(numList[0] - numList[1], 2)
else:
return math.pow(numList[0] - numList[1], 2) + listsum(numList[1:])
并称之为
listsum([1,3,5,7,9])