Tôi hiện đang sử dụng cython để đọc tệp đầu vào, chuyển chuỗi thành int và lưu trữ chúng trong mảng c (thay vì danh sách) để tiết kiệm dung lượng. Mã tôi có dạng như sau:Cập nhật mảng C trong khi đọc tệp đầu vào
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()
Tuy nhiên, chương trình luôn bị hủy khi tôi tham chiếu mảng p. Bằng cách nào đó mảng không được "định nghĩa" vì việc sử dụng bộ nhớ rất thấp. Nó hoạt động, tuy nhiên, nếu tôi đang làm
cdef i
for i in range(0, 1000):
p[i] = i
giá trị của i khi chương trình hủy bỏ là gì? – user1245262
Bạn có thể sử dụng 'array.array()' nếu bạn chỉ lo lắng về không gian –
Bằng cách này, bạn có thể sử dụng liệt kê thay vì khai báo 'i' trước và thực hiện tăng" bằng tay ". Dù sao, có thể là vấn đề là bạn gán một non-cdef dài cho mảng? Nếu bạn làm điều này: 'temp = map (int, lines.rstrip(). Split()) [0]; p [i] = temp' và bạn cdef temp cũng? – Bakuriu