0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python高阶函数详解

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-02 16:47 次阅读

python高阶函数

1. map 函数

map 函数,它接收两个参数,第一个参数是一个函数对象(当然也可以是一个lambda表达式),第二个参数是一个序列。

它可以实现怎样的功能呢,我举个例子你就明白了。

>>> map(lambda x: x*2, [1,2,3,4,5])
[2, 4, 6, 8, 10]

可以很清楚地看到,它可以将后面序列中的每一个元素做为参数传入lambda中。

当我们不使用 map 函数时,你也许会这样子写。

mylist=[]
for i in [1,2,3,4,5]:
    mylist.append(i*2)

2. filter 函数

filter 函数,和 map 函数相似。同样也是接收两个参数,一个lambda 表达式,一个序列。它会遍历后面序列中每一个元素,并将其做为参数传入lambda表达式中,当表达式返回 True,则元素会被保留下来,当表达式返回 False ,则元素会被丢弃。

下面这个例子,将过滤出一个列表中小于0的元素。

>>>filter(lambda x: x < 0, range(-5, 5))
[-5, -4, -3, -2, -1]

3. reduce 函数

reduce 函数,也是类似的。它的作用是先对序列中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 lambda 函数运算,将其得到的结果再与第四个元素进行运算,以此类推下去直到后面没有元素了。

https://file.elecfans.com//web2/M00/33/8C/poYBAGIfLxCAarbfAAB0y7gjBWk239.png

这边举个例子你也就明白了。

>>>reduce(lambda x,y: x+y, [1,2,3,4,5])
15

它的运算过程分解一下是这样的。

1+2=3
3+3=6
6+4=10
10+5=15

4. 注意点

以上几个函数,熟练的掌握它们的写法,可以让我们的代码看起来更加的 Pythonic ,在某一程度上代码看起来更加的简洁。

如果你是新手呢,你需要注意的是,以上示例是在 Python2.x 环境下演示的。而在 Python3.x 中,却有所不同,你可以自己尝试一下。

这里总结一下:

第一点,map 和 filter 函数返回的都不再是一个列表,而是一个迭代器对象。这里以map为例

>>> map_obj = map(lambda x: x*2, [1,2,3,4,5])
>>> from collections.abc import Iterator
>>> isinstance(map_obj, Iterator)
True
>>> next(map_obj)
2
>>> list(map_obj)
[4, 6, 8, 10]

第二点,reduce 不可以直接调用,而是要先导入才能使用

from functools import reduce

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4327

    浏览量

    62573
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84630
收藏 人收藏

    评论

    相关推荐

    Python代理技术详解:从入门到进阶

    Python代理技术是一种在网络编程中广泛使用的技术,它允许通过代理服务器发送和接收网络请求。
    的头像 发表于 11-12 07:06 234次阅读

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 11-08 14:36

    Python常用函数大全

    Python 世界里,有一些宝藏函数和模块,它们可以让你编程更轻松、代码更高效。这篇文章将带你一一认识这些神器,让你的开发生活瞬间轻松不少!
    的头像 发表于 10-27 17:20 236次阅读

    如何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 09-27 06:44

    量子计算场景实用秘籍:开物SDK之“高阶函数降阶”

    现实应用场景往往具有复杂的多变量交互作用和非线性行为,在数学上均属于高阶问题,存在于实际应用中的各个领域,如图像处理中的去噪和超分辨率、工程设计与优化、金融工程中的期权定价和投资组合优化、医疗领域
    的头像 发表于 08-29 11:14 960次阅读
    量子计算场景实用秘籍:开物SDK之“<b class='flag-5'>高阶</b><b class='flag-5'>函数</b>降阶”

    pytorch和python的关系是什么

    在当今的人工智能领域,Python已经成为了最受欢迎的编程语言之一。Python的易学易用、丰富的库和框架以及强大的社区支持,使其成为了数据科学、机器学习和深度学习等领域的首选语言。而在深度学习领域
    的头像 发表于 08-01 15:27 1889次阅读

    python函数的万能参数

    我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数
    的头像 发表于 07-17 14:56 330次阅读
    <b class='flag-5'>python</b><b class='flag-5'>函数</b>的万能参数

    如何使用Python进行神经网络编程

    神经网络简介 神经网络是一种受人脑启发的机器学习模型,由大量的节点(或称为“神经元”)组成,这些节点在网络中相互连接。每个节点可以接收输入,对输入进行加权求和,然后通过一个激活函数产生输出
    的头像 发表于 07-02 09:58 399次阅读

    MATLAB信号处理常用函数详解

    MATLAB是一款功能强大的数学软件,尤其在信号处理领域,它提供了众多的函数和工具箱,使得信号的分析、处理、仿真变得简单而高效。本文将详细介绍MATLAB在信号处理中常用的函数,并通过具体示例来阐述其应用。
    的头像 发表于 05-17 14:31 2125次阅读

    C语言函数指针六大应用场景详解

    函数指针是一种非常强大的编程工具,它可以让我们以更加灵活的方式编写程序。在本文中,我们将介绍 6 个函数指针的高级应用场景,并贴出相应的代码案例和解释。
    的头像 发表于 04-23 18:19 882次阅读

    FPGA的高阶应用与发展方向讨论

    FPGA可编程器件做高阶应用如图像处理、语音识别等需要具备哪些能力,需要怎样更有效从入门到精通 ? FPGA与当下的AI发展结合的怎样?大家可以交流讨论
    发表于 03-30 18:09

    函数发生器的作用,概念要点是什么

    函数生成器是Python中非常强大的特性之一。它们允许我们以一种简洁且高效的方式生成迭代器,从而帮助我们更好地处理大量数据或者在特定条件下生成无限数据。在本文中,我们将探讨函数生成器的作用及其关键
    的头像 发表于 02-23 16:01 534次阅读

    output函数怎么用

    output 函数是一个通用的术语,并不特指某个具体的编程语言或软件工具。 如果你在使用 Python 编程语言,那么可能是指 print 函数Python 中的 print
    的头像 发表于 02-23 14:21 1248次阅读

    python中open函数的用法详解

    python中open函数的用法详解 Python中的open()函数用于打开文件。它接受文件名和模式作为参数,并返回一个文件对象。文件对象
    的头像 发表于 01-30 15:31 2089次阅读

    split在python中的用法

    split在python中的用法 split()是Python中一个非常常用的字符串函数,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。本文将详细介绍
    的头像 发表于 12-25 15:12 2018次阅读