अब मैं एक इनपुट फ़ाइल पढ़ने के लिए साइथन का उपयोग कर रहा हूं, स्ट्रिंग को int में परिवर्तित कर सकता हूं और उन्हें अंतरिक्ष बचाने के लिए एक सी सरणी (सूची के बजाय) में संग्रहीत कर सकता हूं। कोड जो मैंने देखा है:इनपुट फ़ाइल पढ़ने के दौरान एक सी सरणी को अद्यतन करना
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()
हालांकि, जब मैं सरणी पी को संदर्भित करता हूं तो प्रोग्राम हमेशा निरस्त हो जाता है। किसी भी तरह सरणी "परिभाषित" नहीं है क्योंकि स्मृति उपयोग बहुत कम है। यह काम करता है, फिर भी, अगर मैं
cdef i
for i in range(0, 1000):
p[i] = i
जब कार्यक्रम रोकता मैं का मूल्य क्या है के साथ आपकी समस्या को पुन: पेश नहीं कर सका? – user1245262
यदि आप अंतरिक्ष –
के बारे में चिंतित हैं, तो आप 'array.array()' का उपयोग कर सकते हैं, वैसे, आप पहले से 'i' घोषित करने और हाथ से वृद्धि "करने के बजाय गणना का उपयोग कर सकते हैं। वैसे भी, क्या यह संभव है कि समस्या यह है कि आप सरणी के लिए एक गैर-सीडीएफ आवंटित करते हैं? क्या होगा यदि आप ऐसा करते हैं: 'temp = map (int, lines.rstrip()। विभाजन()) [0]; पी [i] = temp' और आप temp भी cdef? – Bakuriu