首页 热点 业界 科技快讯 数码 电子消费 通信 前沿动态 电商

聚焦:Python中reduce函数详解

2022-06-13 09:53:02 来源 : 软件开发网

目录

1 reduce用法

2 reduce与for循环性能对比

reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中。

reduce函数先从列表(或序列)中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完。

1 reduce用法

对列表元素求和,如果不用reduce,我们一般常用的方法是for循环:

def sum_func(arr):    if len(arr) <= 0:        return 0    else:        out = arr[0]        for v in arr[1:]:            out += v        return outa = [1, 2, 3, 4, 5]print(sum_func(a))

可以看到,代码量比较多,不够优雅。如果使用reduce,那么代码将非常简洁:

(资料图片)

from functools import reducea = [1, 2, 3, 4, 5]def add(x, y): return x + yprint(reduce(add, a))

输出结果为:

15

2 reduce与for循环性能对比

与内置函数map和filter不一样的是,在性能方面,reduce相比较for循环来说没有优势,甚至在实际测试中

reduce比for循环更慢。

from functools import reduceimport timedef test_for(arr):    if len(arr) <= 0:        return 0    out = arr[0]    for i in arr[1:]:        out += i    return outdef test_reduce(arr):    out = reduce(lambda x, y: x + y, arr)    return outa = [i for i in range(100000)]t1 = time.perf_counter()test_for(a)t2 = time.perf_counter()test_reduce(a)t3 = time.perf_counter()print("for循环耗时:", (t2 - t1))print("reduce耗时:", (t3 - t2))

输出结果如下:

for循环耗时: 0.009323899999999996reduce耗时: 0.018477400000000005

因此,如果对性能要求苛刻,建议不用reduce, 如果希望代码更优雅而不在意耗时,可以用reduce。

到此这篇关于Python中reduce函数详解的文章就介绍到这了,更多相关Python reduce函数内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!

标签: 循环性能 支持软件 性能要求

相关文章

最近更新
观焦点:超萌相机 2023-03-01 12:29:37
海南百货网 2023-03-01 12:13:44
焦点热讯:宜点充 2023-02-28 10:10:16
天天关注:小铺CEO 2023-02-28 10:07:13
【世界聚看点】KaFit 2023-02-28 09:31:37
葱天下 2023-02-28 09:17:03
渔界竞钓 2023-02-28 08:15:29
焦点快看:鲸奇视频 2023-02-28 06:30:37
环球热议:萝小逗 2023-02-27 23:25:49
简讯:小码公交 2023-02-27 23:16:12
彼岸花 2023-02-27 22:32:52
时时夺宝 2023-02-27 21:37:50
天天动态:袜之源 2023-02-27 21:29:50
天天资讯:AI空气 2023-02-27 20:19:46
世界时讯:绘读 2023-02-27 20:19:41
看点:一元得购 2023-02-27 19:26:28