Używam teraz cythonu do odczytu pliku wejściowego, przekształcenia łańcucha znaków na int i zapisania ich w tablicy c (zamiast na liście), aby zaoszczędzić miejsce. Kod mam wyglądać tak:Aktualizowanie tablicy C podczas odczytu pliku wejściowego
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()
Jednak program jest zawsze przerwany, gdy odwołuję się do tablicy p. W jakiś sposób tablica nie jest "zdefiniowana", ponieważ zużycie pamięci jest bardzo niskie. To działa, jednak jeśli robię
cdef i
for i in range(0, 1000):
p[i] = i
Jaka jest wartość i gdy program przerywa? – user1245262
Możesz użyć 'array.array()' jeśli tylko martwisz się o przestrzeń –
Przy okazji, możesz użyć wyliczenia zamiast deklarowania 'i' przed i robienia kroku" ręcznie ". Czy to możliwe, że problem polega na tym, że do tablicy przypisujesz wartość inną niż cdef? Co jeśli zrobisz to: 'temp = map (int, lines.rstrip(). Split()) [0]; p [i] = temp' and you temp cd także? – Bakuriu