Je n'ai pas codé depuis un moment et essayé de revenir en Python. J'essaie d'écrire un programme simple qui additionne un tableau en ajoutant chaque valeur d'élément de tableau à une somme. Voici ce que j'ai
def sumAnArray(ar):
theSum = 0
for i in ar:
theSum = theSum + ar[i]
print(theSum)
return theSum
Je reçois l'erreur suivante:
line 13, theSum = theSum + ar[i]
IndexError: list index out of range
J'ai trouvé que ce que j'essaie de faire est apparemment aussi simple que cela:
sum(ar)
De toute évidence, je ne parcoure pas le tableau correctement de toute façon, et je suppose que c'est quelque chose que je devrai apprendre correctement à d'autres fins. Merci!
Lorsque vous bouclez dans un tableau comme vous l'avez fait, votre variable for (dans cet exemple i
) est l'élément actuel de votre tableau.
Par exemple, si votre ar
est [1,5,10]
, la valeur i
de chaque itération est 1
, 5
et 10
. Et parce que la longueur de votre tableau est 3, l'indice maximal que vous pouvez utiliser est 2. Ainsi, lorsque i = 5
vous obtenez IndexError
.Vous devriez changer votre code en quelque chose comme ceci:
for i in ar:
theSum = theSum + i
Ou, si vous souhaitez utiliser des index, vous devez créer une plage de 0 à array length - 1
.
for i in range(len(ar)):
theSum = theSum + ar[i]
La boucle for parcourt les éléments du tableau, pas ses index . Supposons que vous ayez une liste ar = [2, 4, 6]:
Lorsque vous parcourez-le avec for i in ar:
, les valeurs de i seront 2, 4 et 6. Ainsi, lorsque vous essayez d'accéder à ar[i]
pour la première valeur, cela peut fonctionner (la dernière position de la liste étant 2, un est égal à 6), mais pas pour les dernières valeurs, car un [4] n'existe pas.
Si vous avez l'intention d'utiliser les index de toute façon, essayez d'utiliser for index, value in enumerate(ar):
, alors theSum = theSum + ar[index]
devrait fonctionner correctement.
Vous pouvez utiliser
nditer
Ici j'ai calculé non. des coefficients positifs et négatifs dans une régression logistique:
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))
Sortie:
no. of positive coefficients is : 85035
no. of negative coefficients is : 36199