web-dev-qa-db-ja.com

Python 3の配列の繰り返し

私はしばらくコーディングしていなかったので、Pythonに戻ろうとはしていませんでした。私は、各配列要素の値を合計に追加することで配列を合計する簡単なプログラムを作成しようとしています。これは私が持っているものです:

def sumAnArray(ar):
    theSum = 0
    for i in ar:
        theSum = theSum + ar[i]
    print(theSum)
    return theSum

次のエラーが表示されます。

line 13, theSum = theSum + ar[i]
IndexError: list index out of range

私がやろうとしていることは、明らかにこれと同じくらい簡単であることがわかりました:

sum(ar)

しかし、明らかに配列を適切に反復処理していないことは明らかであり、他の目的のために適切に学習する必要があると考えています。ありがとう!

11
q-compute

Forループは、インデックスではなく、配列の要素を繰り返し処理します。リストar = [2、4、6]があるとします:

for i in ar:で繰り返し処理すると、iの値は2、4、6になります。したがって、最初の値でar[i]にアクセスしようとすると、(最後の位置としてlistは2、a [2]は6)ですが、a [4]は存在しないため、後者の値はそうではありません。

とにかくインデックスを使用する場合は、for index, value in enumerate(ar):を使用してみてください。そうすれば、theSum = theSum + ar[index]は問題なく動作するはずです。

3
umluizlima

このメソッドを使用してリストまたは配列を反復処理する場合:

ar = [10, 11, 12]
for i in ar:
    theSum = theSum + ar[i]

i変数でリストまたは配列の値を順番に取得しています。変数ifor loop内に印刷する場合。次の出力が得られます。

10
11
12

ただし、コードでは、i変数と配列のインデックス値を混同しています。したがって、ar[i]を実行すると、最初の反復ではar[10]を意味します。もちろん、これはIndexErrorをスローする範囲外のインデックスです

Editthis を読むと、Pythonで配列またはリストを反復処理するさまざまな方法をよりよく理解できます。

0
Faizi

使用できます

    nditer

ここで私は計算しません。ロジスティック回帰における正および負の係数の例:

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

出力:

no. of positive coefficients is : 85035
no. of negative coefficients is : 36199
0
ajay mathur