在Python中将Python List转换为Vector <int> </int>

时间:2012-07-12 14:49:19

标签: python cython

我需要在cdef函数中将int的int列表转换为vector [int]以调用另一个C函数。我试过这个:

cdef pylist_to_handles(hs):
    cdef vector[int] o_vect
    for h in hs:
        o_vect.push_back(h)
    return o_vect

这应该有效,因为我只需要从其他cdef函数调用它,但是我收到了这个错误:

  

无法转换'vector&lt; int&gt;'到Python对象

我做错了什么?

2 个答案:

答案 0 :(得分:10)

在使用libcpp.vector的Cython 0.17中,您可以这样做:

cdef vector[int] vect = hs

答案 1 :(得分:3)

你真正拥有的是:

cdef object pylist_to_handles(hs):
    ...
    return <object>o_vect

如果没有明确设置类型,则假定它是一个python对象(代码中的“对象”)。正如您在代码中看到的那样,您正在尝试将vector [int]转换为对象,但Cython不知道如何处理它。

只需在cdef中添加一个返回类型:

cdef vector[int] pylist_to_handles(hs):