Wie erklären 2D-Liste in Cython

Ich versuche zu kompilieren code dieser Art:

def my_func(double c, int m):
    cdef double f[m][m]

    f = [[c for x in range(m)] for y in range(m)]
    ...

wirft:

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

nach dem ich davon ausgehen kann ich nicht die variable an der Spitzen Stelle und ich versuche mit numerischer Wert:

def my_func(double c, int m):
    cdef double f[500][500]

    f = [[c for x in range(500)] for y in range(500)]
    ...

dann bekomme ich aber:

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'

So, ich bin Fragen, wie zu erklären, und stellen Sie den 2D-Liste in cython-code. Ich konnte nicht finden, dass diese Art von Beispiel in der Dokumentation googeln für "cython 2D-Liste"

  • Nun, wenn ich verlassen Erklärung, bekomme ich kompilierten code aus, also denke ich, dass meine Erklärung falsch ist
  • Tun Sie wirklich wollen, eine Liste von Listen, oder eine 2d-C-array?
  • Ja, es ist wie es geschrieben ist. Ich versuche, die Beschleunigung sehr langsam Python-code durchläuft in einer Schleife jedes element dieses (und zwei weitere) Listen. Stell dir vor, wie langsam er ist.
  • Das war eine entweder-oder-Frage. Sie erklärt, ein 2d-C-array, aber die Verwendung von Python-Listen initialisieren f, so versuche ich herauszufinden, ob Sie verwirren die zwei (oder gar nicht bewusst der Unterschied, wie Ihre Sprache zeigt) oder wollen eine spezifische und sind nur mit falsche syntax.
  • Ja learning Cython 🙂 In der Dokumentation die ich sah-Objekt, das erschien mir als Python-Liste, erklärt, wie p[1000] so dass ich dachte, ich sollte erklären, Liste wie. Sollte ich versuchen zu erklären, oder Listen, die nicht deklariert werden müssen? Ich sah hier das Beispiel: docs.cython.org/src/userguide/tutorial.html#primes
InformationsquelleAutor theta | 2013-01-02
Schreibe einen Kommentar