# [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`

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

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

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[2] equals 6), but not for the latter values, as a[4] 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.