我想要編譯這種代碼2D名單:如何申報在用Cython
def my_func(double c, int m):
cdef double f[m][m]
f = [[c for x in range(m)] for y in range(m)]
...
這引起了:
Error compiling Cython file:
------------------------------------------------------------
def grow(double alpha, double beta, double gamma, int m, int s):
cdef double f[m][m]
^
------------------------------------------------------------
test.pyx:6:22: Not allowed in a constant expression
我之後,認爲我不能在使用變量尖銳的地方,我嘗試用數值:
def my_func(double c, int m):
cdef double f[500][500]
f = [[c for x in range(500)] for y in range(500)]
...
但後來我得到:
Error compiling Cython file:
------------------------------------------------------------
f = [[beta for x in range(500)] for y in range(500)]
^
------------------------------------------------------------
test.pyx:13:6: Assignment to non-lvalue 'f'
所以,我想知道如何在cython代碼中聲明和製作2D列表。在google搜索「用Cython 2D名單」
那麼,如果我離開聲明,我得到了編譯代碼,所以我猜我的聲明是錯誤的 – theta
你真的想要列表或2d C數組? – delnan
是的,就像它寫的。我試圖加速非常慢的Python代碼,該代碼循環遍歷這個(和另外兩個)列表的每個元素。試想一下,這是多麼緩慢。 – theta