我的change_array [i] + = 0和change_array [i] + = roc,我一直收到错误说“列表索引超出范围”。我也尝试过使用'=',但这也不起作用。
#define variables for a loop
change_array = []
roc = 0
#iterate to find the change percentage
for i in range (0, end_year_index+1):
if i == 0:
change_array[i] += 0
else:
roc = ((population[i] - population[i-1])/ (population[i-1]))
change_array[i] += roc
答案 0 :(得分:1)
我假设您要向change_array
添加元素,如果是,则需要使用change_array.append(your_element)
。
答案 1 :(得分:0)
change_array = []
是一个空数组,因此没有0
元素。 0
元素是数组中的第一个元素。
array = ["one", "two"]
array[0]
是"一个",array[1]
是"两个"
答案 2 :(得分:0)
@Ekinydre给了你一个很好的解决方案,但我只是想详细说明你得到的错误。
当您有change_array = [1, 2, 3]
之类的列表时,change_array[i]
访问了元素i
(在Python中列出了使用0的索引)。此外,Python中的+=
不是追加运算符,而是增量运算符。因此change_array[i] += 10
您要将10
添加到位置i
的列表元素中。
正如@Ekinydre建议的那样你可以append
到change_array
,但是考虑到你的代码,可能会更安全(尽管不那么pythonic)做类似以下的事情:
#define variables for a loop
#create a list of 0 of length end_year_index
change_array = [0]*end_year_index
roc = 0
#iterate to find the change percentage
for i in range (0, end_year_index+1):
if i == 0:
change_array[i] += 0
else:
roc = ((population[i] - population[i-1])/ (population[i-1]))
change_array[i] += roc
稍微更加pythonic的方式可能如下所示:
change_array = [(population[i] - population[i-1]) / population[i-1] \
for i in range(1, end_year_index+1)]
注意:最后一个解决方案在change_array
的开头不会有初始值0。