gpt4 book ai didi

python - 编写 Python C 扩展 : how to correctly load a PyListObject?

转载 作者:行者123 更新时间:2023-11-28 22:05:34 24 4
gpt4 key购买 nike

当试图读取一个充满 float 的 Python 列表并用它们的值填充 real channels[7] 时(我使用的是 F2C,所以 real 只是 float 的 typedef),所有我能够从中检索到零值。你能指出下面代码中的错误吗?

static PyObject *orbital_spectra(PyObject *self, PyObject *args) {
PyListObject *input = (PyListObject*)PyList_New(0);
real channels[7], coefficients[7], values[240];
int i;

if (!PyArg_ParseTuple(args, "O!", &PyList_Type, &input)) {
return NULL;
}
for (i = 0; i < PyList_Size(input); i++) {
printf("%f\n", PyList_GetItem(input, (Py_ssize_t)i)); // <--- Prints zeros
}
//....
}

最佳答案

PyList_GetItem 将返回一个 PyObject*。您需要将其转换为 C 可以理解的数字。尝试将您的代码更改为:

printf("%f\n", PyFloat_AsDouble(PyList_GetItem(input, (Py_ssize_t)i)));

关于python - 编写 Python C 扩展 : how to correctly load a PyListObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com