在C扩展中从Python获取列表
我试图在Python的C扩展中获取一个列表作为参数,函数和包装器(函数的表被省略): 在Python函数中,我有以下内容:在C扩展中从Python获取列表,python,python-c-api,Python,Python C Api,我试图在Python的C扩展中获取一个列表作为参数,函数和包装器(函数的表被省略): 在Python函数中,我有以下内容: print (Module.any_function([67, 93, 56])) 如何将Python中的列表传递给C扩展?我迷路了,因为如果我编写一个函数和一个包装器来接收一个整数,那么它可以完美地工作: #include <Python.h> int MyFunction(int n){ printf("%i", n); return
print (Module.any_function([67, 93, 56]))
如何将Python中的列表传递给C扩展?我迷路了,因为如果我编写一个函数和一个包装器来接收一个整数,那么它可以完美地工作:
#include <Python.h>
int MyFunction(int n){
printf("%i", n);
return 0;
}
static PyObject* alice_bob(PyObject* self, PyObject* args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
return Py_BuildValue("i", MyFunction(n));
}
#包括
int MyFunction(int n){
printf(“%i”,n);
返回0;
}
静态PyObject*alice_bob(PyObject*self,PyObject*args)
{
int n;
if(!PyArg_ParseTuple(args,i,&n))
返回NULL;
返回Py_BuildValue(“i”,MyFunction(n));
}
- Numpy API有一个函数PyArray_Mean,它可以完成您尝试执行的操作: static PyObject *func1(PyObject *self, PyObject *args) { PyArrayObject *X, *meanX; int axis; PyArg_ParseTuple(args, "O!i", &PyArray_Type, &X, &axis); meanX = (PyArrayObject *) PyArray_Mean(X, axis, NPY_DOUBLE, NULL); return PyArray_Return(meanX); } 静态PyObject*func1(PyObject*self,PyObject*args){ PyArrayObject*X,*meanX; int轴; PyArg_语法元组(args,“O!i”、&PyArray_类型、&X、&axis); meanX=(PyArrayObject*)PyArray_平均值(X,轴,NPY_双精度,空); 返回PyArray_返回(meanX); }
lst
是PyList
,我看不出有什么问题。如果你真正的问题是“我应该如何利用我所拥有的”,那么你应该问这个问题,并具体说明你到底想做什么。
#include <Python.h>
int MyFunction(int n){
printf("%i", n);
return 0;
}
static PyObject* alice_bob(PyObject* self, PyObject* args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
return Py_BuildValue("i", MyFunction(n));
}
static PyObject *func1(PyObject *self, PyObject *args) {
PyArrayObject *X, *meanX;
int axis;
PyArg_ParseTuple(args, "O!i", &PyArray_Type, &X, &axis);
meanX = (PyArrayObject *) PyArray_Mean(X, axis, NPY_DOUBLE, NULL);
return PyArray_Return(meanX);
}