Cython - 使用python列表初始化vector [int]

时间:2014-11-22 22:19:18

标签: list cython

我想创建一个整数列表,实现为C ++向量,并将其初始化为空(python)列表。 但是,编译代码

from libcpp.vector cimport vector

cdef vector[int] s = []

导致以下编译错误:prova.pyx:3:21: Cannot coerce list to type 'vector[int]'

另外

from libcpp.vector cimport vector

cdef vector[int] s
s = []

导致同样的错误。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

由于随着时间的推移会有很多观点,所以即使它已经过时了,我们也会回答:

cdef vector[int] s

自动初始化一个空vector[int],相当于一个空列表(例如print("empty" if not s else "filled")将打印“空”)。

但是,由于cdefs是c ++ vector,无法转换为PyObject[]是)。 这就是分配在.pyx 中无效的原因。

c ++向量和python列表之间的无缝转换只发生在python脚本中(即在 .py 内,而 a .pyx中),您可以在其中导入返回或拥有s的东西。