Причина, по которой вы получаете ошибку, заключается в том, что вы неправильно используете цикл for, а x в цикле for - это текущий объект в списке итераций.
например, для списка aList = [3, 5, 2, 5, 8, 12]
впервая итерация x будет равна 3, так как aList [0] равен 3
Также, если вы используете свой код с циклом while, он все равно даст нежелательный результат
например
aList = [3, 5, 2, 5, 8, 12]
x = 0
while x < len(aList):
aList[x] = aList[x] - aList[x-1]
x += 1
это потому, что aList [x-1] для первой итерации будет ссылаться на последний элемент aList
(aList[-1]
), начиная с x = 0
, так что это будет aList[0] = aList[0] - aList[0-1]
или aList[0] = 3 - 12
.
Мое решение состояло бы в том, чтобы перечислить список, установить исходное «предыдущее значение» (x_prev
) в 0 и вычесть предыдущий элемент из текущего элемента.
aList = [3, 5, 2, 5, 8, 12]
x_prev = 0
for i, x_val in enumerate(aList):
aList[i] -= x_prev
x_prev = x_val
print(aList)