Iterating over arrays in Python 3

q-compute picture q-compute · Aug 19, 2018 · Viewed 96k times · Source

I haven't been coding for awhile and trying to get back into Python. I'm trying to write a simple program that sums an array by adding each array element value to a sum. This is what I have:

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

I get the following error:

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

I found that what I'm trying to do is apparently as simple as this:

sum(ar)

But clearly I'm not iterating through the array properly anyway, and I figure it's something I will need to learn properly for other purposes. Thanks!

Answer

Mr Alihoseiny picture Mr Alihoseiny · Aug 19, 2018

When you loop in an array like you did, your for variable(in this example i) is current element of your array.

For example if your ar is [1,5,10], the i value in each iteration is 1, 5, and 10. And because your array length is 3, the maximum index you can use is 2. so when i = 5 you get IndexError. You should change your code into something like this:

for i in ar:
    theSum = theSum + i

Or if you want to use indexes, you should create a range from 0 ro array length - 1.

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