37,719
社区成员
发帖
与我相关
我的任务
分享
def product(v1, v2):
sum = 0
for x,y in zip(v1,v2):
sum += x*y
return sum
static PyObject* product(PyObject* self, PyObject* args)
{
PyObject *x, *y;
PyObject *list1, *list2;
int len;
int i;
float value = 0.0;
if (!PyArg_ParseTuple(args, "O|O", &list1, &list2)) return NULL;
len = PyList_GET_SIZE(list1);
for(i=0;i <len;++i)
{
x = PyList_GetItem(list1,i);
y = PyList_GetItem(list2,i);
value += PyFloat_AsDouble(x) * PyFloat_AsDouble(y);
}
return Py_BuildValue("f", value);
}
...
from itertools import imap,starmap,izip
sum(starmap(mul,izip(v1,v2)))
测了一下,比 原来的快了一倍
估计C的话快十倍