我有一个浮点数列表,我想从第一个列表生成另一个周期返回列表。
这是一个运行的工厂实现(未经测试-显然没有错误检查/处理):
a = [100,105,100,95,100]
def calc_period_returns(values, period):
output = []
startpos, endpos = (period, len(values)-1)
while True:
current = values[startpos]
previous = values[startpos-period]
ret = 100*((current-previous)/(1.0*previous))
output.append(ret)
startpos += period
if startpos > endpos:
break
return output
calc_period_returns(a,1)
# Expected output:
# [5.0, -4.7619047619047619, -5.0, 5.2631578947368416]
有没有一种更像Python的方法来做这件事-也许使用列表理解和地图?
我不知道你的数字列表会有多大,但是如果你要处理大量的数字,你应该看看numpy。副作用是计算看起来简单得多。
使用numpy,可以为数据创建数组
把数组当作简单的数字来处理
给你:
由于要比较列表的邻居元素,最好创建一个感兴趣的对列表,如下所示:
之后,从一对数字中提取百分比变化只是一个简单的数学运算。
相关问题 更多 >
编程相关推荐