2014-09-22 9 views
11

मैं एक अधिक कॉम्पैक्ट तरह सेCython सी सरणी प्रारंभ

cdef int mom2calc[3] 
mom2calc[0] = 1 
mom2calc[1] = 2 
mom2calc[2] = 3 

करना चाहते हैं। कुछ

cdef int mom2calc[3] = [1, 2, 3] 

जो एक अवैध साइथन वाक्यविन्यास है।

नोट:

cdef int* mom2calc = [1, 2, 3] 

एक विकल्प है क्योंकि मैं नहीं कर सकते (स्वतः) यह एक स्मृति दृश्य में परिवर्तित नहीं किया है।

उत्तर

16
cdef int mom2calc[3] 
mom2calc[:] = [1, 2, 3] 

यह कच्चे पॉइंटर्स पर काम करता है (हालांकि यह तब बाध्य नहीं है), स्मृति दृश्य और निश्चित आकार के सरणी। यह केवल एक आयाम में काम करता है, लेकिन यह है कि अक्सर काफी है:

cdef int mom2calc[3][3] 
mom2calc[0][:] = [1, 2, 3] 
mom2calc[1][:] = [4, 5, 6] 
mom2calc[2][:] = [7, 8, 9] 
+0

मैं एक [Cython पोस्ट] है (http://stackoverflow.com/questions/41944883/verifying-compatibility-in-compiling-extension-types- और-साथ-उन्हें-सीडीएफ के साथ) आप अंतर्दृष्टि प्रदान करने में सक्षम हो सकते हैं। – Phillip

संबंधित मुद्दे