0

アルゴリズムを Python コードに変換しようとしています。アルゴリズムは次のとおりです。

For i = 1 To n
                For j = 1 To (m - 1)
                    del1 = C(i - 1, j) - C(i - 1, j - 1)
                    del2 = C(i - 1, j + 1) - C(i - 1, j)
                    If del2 = 0 Then
                        r = 0
                    Else
                        r = del1 / del2
                    End If
Next i 

上記のコードのチャンクを段階的に変換しようとしました。del1 の場合、次のように Python コードを記述しようとしました。

del1 = [[C[i-1,j]-C[i-1,j-1] for j in range(1,(m-1))]for i in range [0,int(n)]]

TypeError: 'type' object is not subscriptable というエラーが表示されます。上記のアルゴリズムをPythonコードに変換する方法について、誰かが私に出発点を教えてもらえますか?

編集:

C = [[0 for j in range(0,int(m))]for i in range(0)]
C = [[1 for i in range(0,int(n))]for j in range(0)]  

ありがとう。

ジババ

4

3 に答える 3

3

する必要があります:

del1 = [[C[i-1,j]-C[i-1,j-1] for j in range(1,(m-1))]for i in range(0,int(n))]

[]->()最後にrange

上記の表記は、が多次元スライスをサポートする配列Cのようなものである場合に機能します。がリストのリストであるnumpy場合、以下が機能するはずです。C

del1 = [[C[i-1][j]-C[i-1][j-1] for j in range(1,(m-1))]for i in range(0,int(n))]
于 2013-02-09T03:53:18.857 に答える
0

あなたが望むように見えますrange(0,int(n))

于 2013-02-09T03:53:36.907 に答える
0

Python では、[] 内のもの、つまり角かっこは添字可能と呼ばれます。これは配列の概念を表します。

しかし、ループでは範囲を使用する場合があり、() 括弧の代わりに [] のタイプミスが発生する可能性があります。

範囲値が添字形式または配列の分離可能な要素ではありません。

したがって、唯一の解決策は [] を () に変更して実行することです。

于 2018-08-23T09:53:37.470 に答える