# [python] Iterating over arrays in Python 3

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!

This question is related to `python` `arrays` `python-3.x` `sum`

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]
``````

The for loop iterates over the elements of the array, not its indexes. Suppose you have a list ar = [2, 4, 6]:

When you iterate over it with `for i in ar:` the values of i will be 2, 4 and 6. So, when you try to access `ar[i]` for the first value, it might work (as the last position of the list is 2, a equals 6), but not for the latter values, as a does not exist.

If you intend to use indexes anyhow, try using `for index, value in enumerate(ar):`, then `theSum = theSum + ar[index]` should work just fine.

While iterating over a list or array with this method:

``````ar = [10, 11, 12]
for i in ar:
theSum = theSum + ar[i]
``````

You are actually getting the values of list or array sequentially in `i` variable. If you print the variable `i` inside the `for loop`. You will get following output:

``````10
11
12
``````

However, in your code you are confusing `i` variable with index value of array. Therefore, while doing `ar[i]` will mean `ar` for the first iteration. Which is of course index out of range throwing `IndexError`

Edit You can read this for better understanding of different methods of iterating over array or list in Python

You can use

``````    nditer
``````

Here I calculated no. of positive and negative coefficients in a logistic regression:

``````b=sentiment_model.coef_
pos_coef=0
neg_coef=0
for i in np.nditer(b):
if i>0:
pos_coef=pos_coef+1
else:
neg_coef=neg_coef+1
print("no. of positive coefficients is : {}".format(pos_coef))
print("no. of negative coefficients is : {}".format(neg_coef))
``````

Output:

``````no. of positive coefficients is : 85035
no. of negative coefficients is : 36199
``````