Python基础之reduce函数

哈喽大家好,今天说一下reduce函数的使用方法,以及与for循环的对比。

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

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

# 很多小伙伴在学习的过程中,因为没有好的资料和教程,也不清楚学习方向,以及遇到问题得不到及时的解决,导致自己丧失了学习兴趣与动力,不仅白白浪费时间精力,而且下次在想学东西,也没有兴趣了。

# 所以小编创了一个学习交流q君羊 279199867,准备了海量的学习资料,直接找管理领取就可以了,同数千志同道合的人一同学习交流,

 

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 out

a = [1, 2, 3, 4, 5]
print(sum_func(a))

 

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

from functools import reduce

a = [1, 2, 3, 4, 5]

def add(x, y): return x + y

print(reduce(add, a))

 

输出结果为:

15

 

reduce与for循环性能对比

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

reduce比for循环更慢。
from functools import reduce
import time

def test_for(arr):
    if len(arr) <= 0:
        return 0
    out = arr[0]
    for i in arr[1:]:
        out += i
    return out


def test_reduce(arr):
    out = reduce(lambda x, y: x + y, arr)
    return out

a = [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.009323899999999996
reduce耗时: 0.018477400000000005

 

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

好啦,今天的分享就到这,如果对你有帮助的话可以收藏起来哟!

给大家推荐一套Python爬虫教程,涵盖了大部分的常见案例,非常好用!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基础之reduce函数 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 用Python做一个小说下载器,从获取数据到编写GUI界面

    对于广大书虫而言,没有小说看是最痛苦的,你身边有这样的人吗? 今天咱们分享一个小说下载器代码,打包成exe后,发给你的小伙伴也能直接使用… 思路流程 什么是爬虫? 按照一定的规则, 去采集互联网上面数据 爬虫可以做什么? 采集数据: 定制化采集数据 自动化脚本:自动点赞/评论/刷票/商品抢购脚本/自动发送弹幕 爬虫基本实现思路? 一、数据来源分析 明确需求:…

    Python开发 2023年3月31日
    00
  • 摸鱼也有效率——8个python自动化脚本提高打工人幸福感

    最近有许多打工人都在吐槽打工好难 每天都是执行许多重复的任务 例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等, 使用自动化脚本,就无需手动一次又一次地完成这些任务, 非常方便啊有木有?! 而在某种程度上,Python 就是自动化的代名词。 今天就来和大家一起学习一下, 用8个python自动化脚本提高工作效率~ 快乐摸鱼~ 1、自动化阅读网页新闻 …

    Python开发 2023年4月2日
    00
  • 用Python批量爬取快手视频,实现自动关注/点赞/评论

    今天来点特别的~ 不仅把好看的视频全部pa下来,咱们还要实现自动评论、点赞、关注三连~ 宝,你也可以顺手给我个三连吗?给你个摸摸大~     抓包分析流程 我写成了文档,都在这个PDF里面了,但是好像不能上传,所以点一下大家自行下载吧!点我获取,提取密码 qwer 开始代码 获取视频的代码 import requests # 发送请求 第三方模块(第三方应用…

    2023年4月2日
    00
  • 2022 IEEE 编程语言榜单发布!Python 又双叒叕霸榜了,学 SQL 工作更吃香!

    哈喽兄弟们! 近年来,Python 宛如一匹黑马,一骑绝尘,横扫 TIOBE、Stack Overflow 等榜单,如今在 IEEE Spectrum 发布的第九届年度顶级编程语言榜单中,Python 依然是 C、C++、C#、Java 等老牌语言无法比拟的。 关于编程语言的优劣,众说纷纭。不过,在今年这份报告中,我们也发现了一个让人出乎意料的结果,即根据就…

    Python开发 2023年4月2日
    00
  • 重温Python基础——字典

    哈喽小伙伴们,今天咱们来复习一下Python基础中的字典,看看还记得多少! 使用字典 在python中,字典是一系列键值对。每个键都与一个值相关联,你可使用键值来访问相关联的值。与键相关联的值可以是数、字符串、列表、乃至字典。其实,可以将任何python对象用作字典的值。在python中字典放在花括号 { } 内的一系列键值对表示例如: a = {“anim…

    Python开发 2023年4月2日
    00
  • 当我用Python做了个自动工作汇报的脚本后,每天都闲的只能摸鱼

    哈喽兄弟们 之前经常编写Python脚本来进行数据处理、数据传输和模型训练。随着数据量和数据复杂性的增加,运行脚本可能需要一些时间。在等待数据处理完成时可以同时做一些其他工作。 为了达到这个目的,编写了一组用于解决这个问题的Python脚本。使用这些脚本向手机发送流程更新、可视化和完成通知。当偶尔拥有这些自由的时刻,你可以享受而不是担心模型的进度。 一、需要…

    Python开发 2023年4月2日
    00
  • Python爬虫实战:批量爬取百度图片

    众所周知,某度本身就是最大的爬虫脚本,那么纯纯的去某个网站找壁纸,还不如去某度图片直接找,瞬间格局打开! 话不多说,直接用Python来开发一下此处资源! 开发环境 & 第三方模块 环境 解释器版本 >>> python 3.8代码编辑器 >>> pycharm 2021.2 模块 requests # 发送请求 …

    Python开发 2023年4月2日
    00
  • 这份工具清单,令Python 提速N倍,简直太好用了

    在众多编程语言中,Python的社区生态是其中的佼佼者之一。几乎所有的技术痛点,例如优化代码提升速度,在社区内都有很多成功的解决方案。本文分享的就是一份可以令 Python 变快的工具清单,值得了解下。     一、序言 这篇文章会提供一些优化代码的工具。会让代码变得更简洁,或者更迅速。 当然这些并不能代替算法设计,但是还是能让Python加速很多倍。 其实…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部