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