我上面有一个等式,我想计算红色下划线的总和,[ρ0,ρ1,ρ2,...,ρN] 是一个开始的列表。
for 循环肯定可以解决问题。但我想知道是否有更简洁的pythonic风格。我尝试了 reduce 函数,但它似乎只适用于列表的直接求和或乘法。像上面显示的那样进行求和的方法是什么?
我上面有一个等式,我想计算红色下划线的总和,[ρ0,ρ1,ρ2,...,ρN] 是一个开始的列表。
for 循环肯定可以解决问题。但我想知道是否有更简洁的pythonic风格。我尝试了 reduce 函数,但它似乎只适用于列表的直接求和或乘法。像上面显示的那样进行求和的方法是什么?
我认为您正在寻找的是:
sum((x-y)**2 for (x,y) in izip(a, a[1:]))
对于一个数组a
。允许您同时访问数组的第 i 个和第 i+1 个元素
。izip(a, a[1:])
使用它可能会更好numpy
,但在纯 python 中,您可以对生成器表达式求和。例如
>>> 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 差异和余弦项的乘积的函数。
或者,您可以尝试编写递归函数
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])