Tengo una lista de números de coma flotante y quiero generar otra lista de declaraciones de períodos de mi primera lista.¿Cuál es la forma más pitónica de calcular los cambios porcentuales en una lista de números?
Este es un negocio de la aplicación del molino (no probado - y, obviamente, sin comprobación de errores/manipulación):
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]
¿Hay una manera más Pythonic de hacer esto - tal vez utilizando la lista de comprensión y mapas?
¿cuál es la salida deseada? –
@RomanBodnarchuk: He actualizado la pregunta con un resultado esperado –
ver la actualización de la respuesta. –