填充作为参数传递给C函数的Python列表

填充作为参数传递给C函数的Python列表,python,c,python-2.7,python-c-api,Python,C,Python 2.7,Python C Api,我正在使用C编写一个Python扩展。当列表作为参数传递,而C函数不返回列表,而是返回一个不同的PyObject*时,如何在C中填充一个空列表 b=[] a = c.populate(data=b) print b 输出: [1, 2, 3] 我感谢你的帮助。谢谢。您可以使用将单个元素添加到现有Python列表中对象: 将对象项追加到列表的末尾。如果成功,则返回0;返回-1,如果不成功,则设置异常。类似于列表。追加(项) 或者,使用从另一个list对象扩展列表中的项目: 为itemlist的

我正在使用C编写一个Python扩展。当列表作为参数传递,而C函数不返回列表,而是返回一个不同的
PyObject*
时,如何在C中填充一个空列表

b=[]
a = c.populate(data=b)
print b
输出:

[1, 2, 3]
我感谢你的帮助。谢谢。

您可以使用将单个元素添加到现有Python
列表中
对象:

将对象项追加到列表的末尾。如果成功,则返回
0
;返回
-1
,如果不成功,则设置异常。类似于
列表。追加(项)

或者,使用从另一个
list
对象扩展列表中的项目:

为itemlist的内容设置介于low和high之间的列表切片。类似于
列表[低:高]=itemlist
。itemlist可能为空,表示分配了空列表(切片删除)。成功时返回
0
,失败时返回
-1
。从Python切片时不支持负索引


非常感谢你,马蒂恩。我试过并且喜欢你建议我的PyList_Append()解决方案。您知道如何在C代码中(而不是在Python端)将列表的大小设置为空,以便如果C.populate在Python循环中,b缓冲区不会越来越大。再次感谢。使用
PyList_SetSlice()
itemlist
设置为
NULL
low
设置为
0
high
设置为列表的
Py_SIZE
。很抱歉,我可能错过了您的PyList_SetSlice()建议。我试过了,它为我的目的发挥了卓越的作用。非常感谢你,马蒂恩。