मैं साइथन के लिए नया हूं और मैं घंटों तक गुगली कर रहा हूं। मैं एक सूची पास करना चाहता हूं उदा। एक साइथन फ़ंक्शन के पूर्णांक, कुछ गणना करें और एक सूची लौटाएं।
कुछ इस तरह:
cimport libc.stdlib as lib
def do_calc(list_a):
cdef size_t n = len(list_a)
cdef int* data = <int*>lib.malloc(n * sizeof(int))
cdef int i
for i in range(n):
data[i] = 2 * list_a[i]
return data
मैं तर्क के रूप में numpy array पास नहीं करने जा रहा हूं।
अंत में फ़ंक्शन को कॉल करें जैसे:
import example_cy
a = [1, 2, 3]
print(example_cy.do_calc(a))
त्रुटि:
example_cy.pyx:11:11: Cannot convert 'int *' to Python object
किसी भी गाइड के लिए अग्रिम धन्यवाद।
1 उत्तर
यहां थोड़ा संशोधित उदाहरण दिया गया है:
cimport libc.stdlib as lib
def do_calc(list_a):
cdef size_t n = len(list_a)
# `data` declaration changed from `int* data`
cdef int *data = <int *> lib.malloc(n * sizeof(int))
cdef int i
try:
for i in range(n):
data[i] = 2 * list_a[i]
# pack C values back to python int objects
return [x for x in data[:n]]
finally:
# don't forget to fee allocated memory
lib.free(data)
आप आधिकारिक डॉक्स में अधिक स्पष्टीकरण पढ़ सकते हैं: https://cython। readthedocs.io/en/latest/src/tutorial/memory_allocation.html
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।