在Cython中将Python列表转换为Vector<int>

2024-05-14 23:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个Python的int列表转换为cdef函数中的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函数调用它,但是我得到这个错误:

Cannot convert 'vector<int>' to Python object

我做错什么了?


Tags: to函数in列表forreturnbackpush
2条回答

在Cython 0.17中,使用libcpp.vector,可以执行以下操作:

cdef vector[int] vect = hs

你真正拥有的是:

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

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

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

cdef vector[int] pylist_to_handles(hs):

相关问题 更多 >

    热门问题