Перебор массивов в Python 3



Я уже давно не кодирую и не пытаюсь вернуться в Python. Я пытаюсь написать простую программу, которая суммирует массив, добавляя каждое значение элемента массива к сумме. Вот что у меня есть:



def sumAnArray(ar):
theSum = 0
for i in ar:
theSum = theSum + ar[i]
print(theSum)
return theSum


Я получаю следующую ошибку:



line 13, theSum = theSum + ar[i]
IndexError: list index out of range


Я обнаружил, что то, что я пытаюсь сделать, очевидно, так же просто, как это:



sum(ar)


Но очевидно, что я все равно не перебираю массив должным образом, и я думаю, что это то, что мне нужно будет изучить должным образом для других целей. Спасибо!

673   2  

2 ответов:

Когда вы выполняете цикл в массиве, ваша переменная for (В этом примере i) является текущим элементом вашего массива.

Например, если ваш ar равен [1,5,10], то значение i в каждой итерации равно 1, 5, и 10. И поскольку длина вашего массива равна 3, максимальный индекс, который вы можете использовать, равен 2. Итак, когда i = 5 вы получаете IndexError. Вы должны изменить свой код примерно так:

for i in ar:
    theSum = theSum + i

Или если вы хотите использовать индексы, вы должны создать диапазон от 0 ro array length - 1.

for i in range(len(ar)):
    theSum = theSum + ar[i]

Цикл for перебирает элементы массива, а не его индексы. Предположим, у вас есть список ar = [2, 4, 6]:

Когда вы повторяете его с for i in ar:, значения i будут 2, 4 и 6. Таким образом, когда вы пытаетесь получить доступ к ar[i] для первого значения, это может сработать (поскольку последняя позиция списка равна 2, a[2] равно 6), но не для последних значений, так как a[4] не существует.

Если вы все равно собираетесь использовать индексы, попробуйте использовать for index, value in enumerate(ar):, тогда theSum = theSum + ar[index] должно работать просто отлично.

Comments

    Ничего не найдено.