课时21:函数:lambda表达式
目录:
一、lambda表达式
二、介绍两个BIF:filter()和map()
三、课时21课后习题及答案
*********************
一、lambda表达式
*********************
Python允许使用lambda关键字来创建匿名函数。
先来定义一个普通的函数:
>>> def ds(x):return 2 * x + 1>>> ds(5) 11
如果使用lambda语句来定义这个函数,就会变成这样:
>>> lambda x : 2 * x + 1 <function <lambda> at 0x00000172968578C8>
Python的lambda表达式语法非常精简,基本语法是在冒号(:)左边放原函数的参数,可以有多个参数,用逗号(,)隔开即可;冒号右边是返回值。在上面的例子中我们发现lambda语句实际上是返回一个函数对象,如果要对它进行使用,只需要进行简单的操作即可:
>>> g=lambda x : 2 * x + 1 >>> g(5) 11
下面演示lambda表达式两个参数的例子:
>>> def add(x,y):return x + y>>> add(3,4) 7 >>> g = lambda x , y :x + y >>> g(3,4) 7
lambda表达式的作用:
(1)Python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
(2)对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名的问题了。
(3)简化代码的可读性,由于普通的屌丝函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。
*******************************************
二、介绍两个BIF:filter()和map()
*******************************************
1、filter()
我们研究的第一个内建函数是一个过滤器。我们每天会接触到大量的数据,过滤器的作用就显得非常重要了,通过过滤器,就可以保存你所关注的信息,把其它不感兴趣的东西直接丢掉。那Python如何来实现过滤功能呢?先来看看Python自己的注释:
>>> help(filter) Help on class filter in module builtins:class filter(object)| filter(function or None, iterable) --> filter object| | Return an iterator yielding those items of iterable for which function(item)| is true. If function is None, return the items that are true.| | Methods defined here:| | __getattribute__(self, name, /)| Return getattr(self, name).| | __iter__(self, /)| Implement iter(self).| | __next__(self, /)| Implement next(self).| | __reduce__(...)| Return state information for pickling.| | ----------------------------------------------------------------------| Static methods defined here:| | __new__(*args, **kwargs) from builtins.type| Create and return a new object. See help(type) for accurate signature.
大概意思是:filter有两个参数。第一个参数可以是一个函数也可以是None,如果是一个函数的话,则将第二个可迭代数据里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。举个例子:
>>> temp = filter(None,[1,0,False,True]) >>> list(temp) [1, True]
利用filter(),尝试写一个筛选奇数的过滤器:
>>> def odd(x):return x%2>>> temp = filter(odd,range(10)) >>> list(temp) [1, 3, 5, 7, 9]
那现在学习了lambda函数后,完全可以把上述过程转化为一行:
>>> list(filter(lambda x:x%2,range(10))) [1, 3, 5, 7, 9]
2.map()
map在这里不是地图的意思,在编程领域,map一般作“映射”来解释。map()这个内置函数也有两个参数,仍然的hi一个函数和一个可迭代序列,将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕,返回所有加工后的元素构成的新序列。
举个例子:
>>> list(map(lambda x:x*2,range(10))) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
*******************************
三、课时21课后习题及答案
*******************************
转载于:https://www.cnblogs.com/DC0307/p/9475504.html
课时21:函数:lambda表达式相关推荐
- C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)
2019独角兽企业重金招聘Python工程师标准>>> C++11新特性中的匿名函数Lambda表达式的汇编实现分析(一) 首先,让我们来看看以&方式进行变量捕获,同样没有参 ...
- Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- 【Kotlin】Kotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )
文章目录 一.函数头声明 二.函数参数 1.默认参数值 2.具名参数 三.Unit 函数 四.TODO 函数抛出异常返回 Nothing 类型 五.反引号函数名 六.匿名函数 七.匿名函数的函数类型 ...
- Python匿名函数——lambda表达式
如果要定义的函数很简单,一个return语句就能搞定,可以使用lambda表达式来定义, lambda表达式的语法如下: lambda parameters: expression lambda表达式 ...
- LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)
1. 题目 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: ...
- QT Core | 信号槽02 - GUI上按钮触发应用程序的函数(lambda表达式)
文章目录 一.前言 二.新建一个QT项目 2.1.New File or Project 2.2.Location 2.3.Kit 2.4.Detail 2.5.Summary 2.6.工程 2.7. ...
- 14_python基础—匿名函数lambda表达式
文章目录 一.lambda 表达式 1.1 lambda的应用场景 1.2 lambda语法 快速入门 1.3 示例:计算a + b 1.3.1 函数实现 1.3.2 lambda实现 1.4 lam ...
- python匿名函数的作用_Python匿名函数 Lambda表达式作用
在Python这门优美的编程语言中,支持一种有趣的语法格式(表达式),可以让我们在单行内创建一个最小的函数-python lambda匿名函数. 据说是借鉴了Lisp语言中lambda表达式,它可以使 ...
- lambda表达式函数接口_函数Lambda表达式中UnaryOperator的示例
lambda表达式函数接口 Java 8 Lambda表达式的实现需要介绍一些具有深奥名称的新接口,这些接口可能会对没有任何函数式编程经验的开发人员造成一定的威胁. 功能性UnaryOperator接 ...
- 高阶函数-lambda表达式
#2.6 map()# 第一个参数传入一个函数,,第二个参数为一个可迭代对象li_1 = (1,3,5,7)def funcA(x): return x*xm1 = map(funcA,li_1)pr ...
最新文章
- spring (由Rod Johnson创建的一个开源框架)
- YUV420转YUV444 , YUV420转RGB
- Java ArrayList 为什么要实现 RandomAccess 接口?
- delphi中的ParamStr
- java 传送解析8583报文_java发送ISO8583报文接口案例
- Ruby的Range类
- jqGrid宽度自适应
- java注释符_Java程序中的单行注释符是( ),多行注释符是( )。
- Msfvenom木马使用及TheFatRat工具
- oracle自学视频
- Liang-Barsky直线段裁剪算法
- 如何在视频上添加水印?建议收藏这些方法
- NTFS磁盘读写工具Mounty 1.9 Mac免费版
- 剑指offer面试题2:实现单例模式
- 深圳赏给我的耳光:说到底,生活就是一场接着一场的较量
- 什么是深度学习?有哪些相关书籍推荐?
- 简单的LED交替闪烁程序
- 输入法中表情和小图标的应用
- 疫情之下,互联网产品逆势爆发
- 谈谈红楼梦(第1-5回)