Ora sto utilizzando cython per leggere un file di input, convertire la stringa in int e memorizzarli in un array c (anziché in un elenco) per risparmiare spazio. Il codice che ho è simile al seguente:Aggiornamento di un array C durante la lettura di un file di input
cdef long p[10000000]
cdef long i
i = 0
f = open(filename, 'r')
for line in f:
temp = map(int, line.split())
p[i] = temp[0]
i = i + 1
f.close()
Tuttavia, il programma viene sempre interrotto quando faccio riferimento all'array p. In qualche modo l'array non è "definito" in quanto l'utilizzo della memoria è molto basso. Funziona, però, se sto facendo
cdef i
for i in range(0, 1000):
p[i] = i
Qual è il valore dei quando il programma si interrompe? – user1245262
Potresti usare un 'array.array()' se sei solo preoccupato per lo spazio –
A proposito, puoi usare enumerare invece di dichiarare 'i' prima e fare l'incremento" a mano ". In ogni caso, è possibile che il problema è che si assegna un array non cdef alla matrice? Cosa fare se si esegue questa operazione: 'temp = map (int, lines.rstrip(). Split()) [0]; p [i] = temp' e anche tu cdef temp? – Bakuriu