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 回答