python数组 swig_如何使用SWIG将C数组转换为Python元组或列表?

我正在开发一个C /

Python库项目,它在将C代码转换为Python库时使用SWIG.在C标题之一中,我有一些全局常量值,如下所示.

const int V0 = 0;

const int V1 = 1;

const int V2 = 2;

const int V3 = 3;

const int V[4] = {V0, V1, V2, V3};

我可以直接从Python使用V0到V3,但不能访问V中的条目.

>>> import mylibrary

>>> mylibrary.V0

0

>>> mylibrary.V[0]

Traceback (most recent call last):

File "", line 1, in

TypeError: 'SwigPyObject' object has no attribute '__getitem__'

谁能告诉我如何自动将V转换为Python元组或列表?我的.i文件应该怎么办?

最佳答案 以下宏确实有效.

%{

#include "myheader.h"

%}

%define ARRAY_TO_LIST(type, name)

%typemap(varout) type name[ANY] {

$result = PyList_New($1_dim0);

for(int i = 0; i < $1_dim0; i++) {

PyList_SetItem($result, i, PyInt_FromLong($1[i]));

} // i

}

%enddef

ARRAY_TO_LIST(int, V)

%include "myheader.h"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值