python传参数组
① C++调用时python时,如何传入数组做为参数
题主,你基本操作没什么问题,有几个小地方要修改一下,修改如下:
你的源码:
PyObject* list = PyList_New(3);
for (size_t i = 0; i < 3; i++)
PyList_Append(list, Py_BuildValue("i", i));
PyEval_CallObject(pFunc, list);
--------------------------------------------------------------------------------------
修改后,应该是这样
PyObject*pArgs=NULL;
PyObject*list=PyList_New(0);//3改成0
pArgs=PyTuple_New(1);//定义1个参数
for(size_ti=0;i<3;i++)
PyList_Append(list,Py_BuildValue("i",i));//这样才能用Append,
PyTuple_SetItem(pArgs,0,list);//将列表赋给参数
PyEval_CallObject(pFunc,list);//传入参数,调用函数
注意事项:PyList_New(0)初始化0的时候,应该用Append初始化
PyList_New(3)初始化3个时候,应该用SetItem初始化
如果用Append的话,会出现[NULL,NULL,NULL]的情况
我在给一个完整的:
Python :(hello.py)
defTestList(nlist):
print(nlist)
return
一般参数都是已元组形式传入的
Py_Initialize();
PyRun_SimpleString("importsys");
PyRun_SimpleString("sys.path.append('./')");
PyObject*pMole=NULL;
PyObject*pList=NULL;
PyObject*pFunc=NULL;
PyObject*pArgs=NULL;
pMole=PyImport_ImportMole("hello");
pFunc=PyObject_GetAttrString(pMole,"TestList");
pArgs=PyTuple_New(1);
pList=PyList_New(0);
for(inti=0;i<3;i++)
{
PyList_Append(pList,Py_BuildValue("i",i));
}
PyTuple_SetItem(pArgs,0,pList);
pRet=PyEval_CallObject(pFunc,pArgs);
Py_Finalize();
最后输出的:[0, 1, 2]
② python如何传递数组给自定义函数,不要循环语句
void fun(a,10) 将数组a的首地址赋给指针s
{
int i; i 计的是这数组中有几个字母
for (;*s;s++) 每循环一次,s后移一位,判断结束循环的条件s指向的内容为" \0 "
{
if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
i++;
}
③ 如何用python向C#的DLL函数传递二维数组
在什么环境呢?在web下的话,可以通过json来传递;winform的话,估计要通过中转语言来了,比如C(自己想的,呵呵)
④ 怎样获得想python中传递的参数数组
全自动安装:easy_install
jieba
或者
pip
install
jieba
半自动安装:先下载http://pypi.python.org/pypi/jieba/
,解压后运行python
setup.py
install
手动安装:将jieba目录放置于当前目录或者site-packages目录
通过import
jieba
来引用
(第一次import时需要构建Trie树,需要几秒时间)!
⑤ 对Python中数组的几种使用方法总结
对Python中数组的几种使用方法总结
今天小编就为大家分享一篇对Python中数组的几种使用方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
二维数组的初始化
matirx_done = [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]
就将其初始化为一个与matrix相同大小的元素全为 0 的矩阵
数组的多级排序
在数组 idea_collect = [[3, 1, 2], [3, 2, 1], [3, 2, 2], [3, 1, 1]] 中, 先按照第二项排列, 再按照第三项倒序排列 可写为:
idea_collect.sort(key=lambda x: (x[1], -x[2]))
其中, x[1] 代表第二项正序排列, -x[2] 代表第三项倒序排列
排列结果为 [[3, 1, 2], [3, 1, 1], [3, 2, 2], [3, 2, 1]]
在一个 class 中多个函数不传参使用同一个数组
如例所示:
class Partition:
def __init__(self):
self.num_complete = []
def partition(self, num, start, end):
self.num_compelete = num
def partition_core(self):
del self.num_compelete[0]
其中,self.num_compelete就是 class 中两个函数同时可以直接调用的数组, 不过最好先在def __init__中声明这个数组
以上这篇对Python中数组的几种使用方法总结就是小编分享给大家的全部内容了
⑥ python 调用 C++的DLL,函数参数是数组怎么处理
给你一个例子看看,你就知道怎么做了
C++的接口
typedef struct
{
unsigned long DeviceType;
int Handle;
int NumberOfClients;
int SerialNumber;
int MaxAllowedClients;
}NeoDevice;
int _stdcall icsneoFindNeoDevices(unsigned long DeviceTypes, NeoDevice *pNeoDevices, int *pNumberOfDevices);
Python调用的代码:
class NeoDevice(Structure):
_fields_ = [("DeviceType",c_ulong),
("Handle",c_int),
("NumberOfClients",c_int),
("SerialNumber",c_int),
("MaxAllowedClients",c_int)]
class cNeoVICan(CCanBase):
def __init__(self):
neoVi = windll.icsneo40
self.icsneoFindNeoDevices = neoVi.icsneoFindNeoDevices
if __name__ == "__main__":
canBus = cNeoVICan()
print canBus.icsneoGetDLLVersion()
iNumberOfDevices = (NeoDevice * 10)()
num = c_int()
iResult = canBus.icsneoFindNeoDevices(c_ulong(65535), cast(iNumberOfDevices, POINT(NeoDevice)), byref(num))
⑦ Python如何把数值放到一个数组里面
Python把数值放到一个数组里面的步骤如下:
1.第一步,定义一个列表a,赋值为1-9这九个数字符素,注意表示形式。