在C中使用python的list对象,怎么进行操作?!试了N遍..怎么都弄不好,求各位大虾支支招!!
在 static PyObject *wrap_md(PyObject *self, PyObject *args) //PYTHON的C语言扩展模块
中定义了一个新的PyObject *, 而且是个LIST:
PyObject *xforce = PyList_New(TN); // int TN
//这里有一个问题,TN是从PYTHON读入的一个变量,可以这么定义吗?如果不行,怎么办?
然后,我就要对其进行操作了:
for (a = 0; a < TN;a++){
PyList_Insert(xforce, a, PyFloat_FromDouble(xForces(a)));}
//xForces()是之前定义的一个函数,返回double值。
//我想把它转换成 PyFloat 对象,可是就是不行!!结果只有 最后一个(即a=TN-1时)非零,其他的全是零。
//我也尝试过使用PyBuildValue(),结果一样跟上面一样。
//试过在Insert前增加计数 Py_INCREF(xforce),结果还是不对。
我验证了,设了一个 double test; test = xForces(i) // i为随便的一个int数,不循环,不插入List里,返回到Python是正确的。这说明我的xForces函数没有写错,返回的double值是正确的。。。
那问题就是出在这个PyList_Insert上。。试了N遍。。。什么增加计数,减少计数都不能。。(在FOR循环里,增加计数后,会变成全零,减少计数后无法运行,直接崩溃)
郁闷了。。。怎么也调试不出来。。。各位大虾帮我看看吧。。谢谢!!