如果我有数字列表或列表中的对象,例如l = [3,5,3,6,47,89]。我们可以使用以下python代码计算最小值,最大值和平均值
minimum = min(l)
maximum = max(l)
avg = sum(l) / len(l)
由于所有都涉及迭代整个列表,因此对于大型列表和大量代码来说速度很慢。是否有任何python模块可以一起计算所有这些值?
Cython功能:
@cython.boundscheck(False)
@cython.wraparound(False)
def minmaxAvg(list x):
cdef int i
cdef int _min, _max, total
_min = x[0]
_max = x[0]
total = 0
for i in x:
if i < _min: _min = i
elif i > _max: _max = i
total += i
return _min, _max, total/len(x)
要比较的纯python函数:
def builtinfuncs(x):
a = min(x)
b = max(x)
avg = sum(x) / len(x)
return a,b,avg
In [16]: x = [random.randint(0,1000) for _ in range(10000)]
In [17]: %timeit minmaxAvg(x)
10000 loops, best of 3: 34 µs per loop
In [18]: %timeit frob(x)
1000 loops, best of 3: 460 µs per loop
免责声明:
-cython的速度结果将取决于计算机硬件。
-不像使用内置函数那样灵活,简单。例如,您将不得不更改函数以处理除整数以外的任何内容。
-在走这条路之前,您应该问自己这个操作是否确实是应用程序中的大瓶颈。可能不是。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句