Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算增长率_Python_Python 2.7 - Fatal编程技术网

Python 计算增长率

Python 计算增长率,python,python-2.7,Python,Python 2.7,嗨,我想从列表中计算出增长率的百分比 def growth(): population = [1, 3, 4, 7, 8, 12] # new list for growth rates growth_rate = [] # for population in list for pop in population: gnumbers = ((population[pop] - population[pop-1]) / population[po

嗨,我想从列表中计算出增长率的百分比

def growth():

   population = [1, 3, 4, 7, 8, 12]

   # new list for growth rates
   growth_rate = []

   # for population in list
   for pop in population:

       gnumbers = ((population[pop] - population[pop-1]) / population[pop-1] * 100)
       growth_rate.append(gnumbers)
       print growth_rate

growth()
但是它在这里给了我一个索引错误gnumbers indexer,索引超出了范围

在您的代码中,pop迭代的是总体值,而不是索引。要迭代除零之外的索引,请写入:

for pop in range(1, len(population)):
另一件需要注意的事情是,下面使用整数除法:

这样做的目的是将结果截断为整数。从你的数据来看,很明显你不想这样。以下是重新表述表达式以避免此问题的一种方法:

gnumbers = ((population[pop] - population[pop-1]) * 100.0 / population[pop-1])

一旦乘以100.0(这是一个浮点数),就会得到一个浮点数结果,随后的除法将不会截断为整数。

NPE的建议将起作用,我还建议在需要列表的索引和值时使用enumerate:

for pop_index,pop_val in enumerate(population):

对不起,我无法控制自己:

import numpy as np

growth_rate = np.exp(np.diff(np.log(population))) - 1

enumerate很好,但我不认为它特别适合此用例。请将您的问题作为最小、完整和可验证的示例发布:它们更易于使用。好的,我一定会记住这一点,但我认为这个问题没有什么错?这个问题并没有那么糟糕,但你的最后一次很糟糕。如果你以MCV的身份发布,你会得到更好的答案,并且可能会解决一半的问题。另外,如果你发布MCV,回答的人可能会在发布答案之前运行代码,这对你来说也会更好,而且工作量也会更少。还有一件事,它给出了完整的列表,但是是一个参数形式。你知道,他从第一个元素开始,然后是第一个元素和第二个元素,依次打印列表。我如何解决这个问题?@TychoAtsma:你需要将打印从循环中移出。
import numpy as np

growth_rate = np.exp(np.diff(np.log(population))) - 1