python 的移动平均线
moving average in python
我试图创建一个生成器函数,它可以找到列表的简单移动平均线,但它根本不起作用。我认为问题的根源可能在于找到 sum
def gen(lst, n):
s = 0
for i, _ in enumerate(lst):
if lst[i] < n:
s += lst[n - (n-i)]
我的代码在播放时什么也没做。我该怎么办?
if lst[i] < n:
你没有定义i
但我猜 i
是 lst
的索引,所以尝试:
for i, _ in enumerate(lst):
if lst[i] < n:
s += lst[n - (n-i)]
编辑:
def gen(lst, n):
if n > len(lst):
print("Sorry can't do this")
try:
for i, _ in enumerate(lst[:-(n-1)]):
s = sum(lst[i:i+n])
yield s/n
except ZeroDivisionError:
print("Sorry can't do this")
您可能对该代码段有一些问题,因为您没有包含一些相关变量以及它们的使用方式。
下面是一个示例,说明如何计算 list_of_numbers
的移动平均线,给定周期为 n
的头寸 p
。
def mAverage(list_of_numbers, p, n):
if n < p:
return sum(list_of_numbers[p-n:p])/n
else:
return sum(list_of_numbers[0:p])/(p + 1)
注意:在列表的开头,此函数只会计算周期等于列表中位置的移动平均线。
我试图创建一个生成器函数,它可以找到列表的简单移动平均线,但它根本不起作用。我认为问题的根源可能在于找到 sum
def gen(lst, n):
s = 0
for i, _ in enumerate(lst):
if lst[i] < n:
s += lst[n - (n-i)]
我的代码在播放时什么也没做。我该怎么办?
if lst[i] < n:
你没有定义i
但我猜 i
是 lst
的索引,所以尝试:
for i, _ in enumerate(lst):
if lst[i] < n:
s += lst[n - (n-i)]
编辑:
def gen(lst, n):
if n > len(lst):
print("Sorry can't do this")
try:
for i, _ in enumerate(lst[:-(n-1)]):
s = sum(lst[i:i+n])
yield s/n
except ZeroDivisionError:
print("Sorry can't do this")
您可能对该代码段有一些问题,因为您没有包含一些相关变量以及它们的使用方式。
下面是一个示例,说明如何计算 list_of_numbers
的移动平均线,给定周期为 n
的头寸 p
。
def mAverage(list_of_numbers, p, n):
if n < p:
return sum(list_of_numbers[p-n:p])/n
else:
return sum(list_of_numbers[0:p])/(p + 1)
注意:在列表的开头,此函数只会计算周期等于列表中位置的移动平均线。