Próbuję skompilować ten rodzaj kodu:Jak zadeklarować listę 2D w 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)]
...
który podnosi:
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
po czym zakładam, że nie można używać zmiennej u spiczasty miejsce i staram się z wartości liczbowej:
def my_func(double c, int m):
cdef double f[500][500]
f = [[c for x in range(500)] for y in range(500)]
...
ale potem dostać:
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'
Zastanawiam się, jak zadeklarować i utworzyć listę 2D w kodzie cythonowym. Nie mogłem znaleźć tego rodzaju przykład w dokumentacji googlowania na „liście 2D Cython”
Cóż, jeśli wyjdę z deklaracji, otrzymam skompilowany kod, więc domyślam się, że moja deklaracja jest błędna. – theta
Czy rzeczywiście chcesz listę list lub tablicę 2d C? – delnan
Tak, to jest tak, jak jest napisane. Próbuję przyspieszyć bardzo powolny kod w języku Python, który pętli nad każdym elementem tej (i jeszcze dwóch) list. Wyobraź sobie, jak powolne. – theta