Перебор массивов в 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)
Но очевидно, что я все равно не перебираю массив должным образом, и я думаю, что это то, что мне нужно будет изучить должным образом для других целей. Спасибо!
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