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[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.

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

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

Source: Stackoverflow.com