Home > Mobile >  how to iterate list and avoid TypeError: only integer scalar arrays can be converted to a scalar ind
how to iterate list and avoid TypeError: only integer scalar arrays can be converted to a scalar ind

Time:11-30

I have a list:[array([2, 5, 0, 6, 6, 0, 2, 0]), array([3, 2, 5, 4, 4, 5, 6, 0]), array([1, 1, 5, 1, 4, 6, 0, 0]), array([1, 3, 5, 4, 2, 2, 5, 3]), array([5, 0, 6, 3, 1, 0, 5, 3]), array([1, 5, 1, 6, 0, 3, 5, 5]), array([4, 6, 1, 1, 3, 5, 2, 6]), array([5, 5, 1, 2, 6, 0, 5, 0])] <class 'list'>

I want to be able to iterate each array in the list and pass it through a function and make a new list of outcomes for that i have this:

fit=[]
 for i in collection:
    state = collection[i]
    test = Review(state)
    fit.append(test.function())
 print(fit) 

But I get the following type error:

TypeError: only integer scalar arrays can be converted to a scalar index

i needs to be an int but in this case it would be an array from the list and what I need to do is pass each array to this function to get a result and add this to the new fit list

CodePudding user response:

The for loop iterates over collection and as such i will be an element of collection. You're getting the error because i is not an int. Also the line state = collection[i] is redundant. Instead you can simply do state = i

After your comment, if you would like to iterate over the inner arrays you will need a second loop. To take your example of summing the arrays it would look something like this:

for i in collection:
    arr_sum = 0
    for j in i:
        arr_sum  = j
    print(f'Array sum is {arr_sum}')

Note that for the application of a simple sum you can use the sum() function.

CodePudding user response:

To iterate over list of arrays, try this:

fit=[]
for state in collection: #Iterate over each element in the collection
    test = Review(state)
    fit.append(test.function())
print(fit) 

Or

fit=[]
for i in collection:
    state = i
    test = Review(state)
    fit.append(test.function())
print(fit) 
  • Related