@ Ekinydre дал вам хорошее решение, но я просто хотел уточнить полученную вами ошибку.
Если у вас есть список change_array = [1, 2, 3]
, то change_array[i]
Доступ к элементу i
(списки используют индексы на основе 0 на Python). Кроме того, +=
в Python не является оператором append, а оператором инкремента. Итак, change_array[i] += 10
вы добавляете 10
к элементу списка в позиции i
.
Вы можете просто append
к change_array
как предполагает @Ekinydre, но данный код может быть безопасным (хотя и менее вещий), чтобы сделать что-то вроде следующего:
#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
чуть более вещий образом может выглядеть это:
change_array = [(population[i] - population[i-1])/population[i-1] \
for i in range(1, end_year_index+1)]
Примечание: это последнее решение не будет иметь начальный 0 в начале change_array
.
Я думаю, что 'change_array' должно быть' [0 для _ в диапазоне (end_year_index + 1)] ', если вы хотите, чтобы для каждого индекса добавлялся нуль. Вы не можете индексировать произвольно в список Python или вообще с пустым списком. – jonrsharpe
Любопытно, что вы, вероятно, могли бы сделать то, что хотели, просто сделав словарь 'change_array'. –
@JeremyKemball a defaultdict (int) ', конечно. – jonrsharpe