Iterating over arrays in Python 3

后端 未结 4 676
忘了有多久
忘了有多久 2020-12-06 09:38

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

相关标签:
4条回答
  • 2020-12-06 10:03

    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.

    0 讨论(0)
  • 2020-12-06 10:13

    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
    
    0 讨论(0)
  • 2020-12-06 10:15

    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

    0 讨论(0)
  • 2020-12-06 10:24

    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]
    
    0 讨论(0)
提交回复
热议问题