Python函数学习——匿名函数
匿名函数
匿名函数就是不需要显式的指定函数名。
关键字lambda
表示匿名函数,冒号前面的n
表示函数参数,可以有多个参数。
匿名函数有个限制,就是只能有一个表达式,不用写return
,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
有些函数在代码中只用一次,而且函数体比较简单,使用匿名函数可以减少代码量,看起来比较"优雅“
#这段代码 def calc(x,y):return x**y#换成匿名函数 calc = lambda x,y:x**y print(calc(2,5))def calc(x,y):if x > y:return x*yelse:return x / y#三元运算换成匿名函数 calc = lambda x,y:x * y if x > y else x / y print(calc(2,5))
匿名函数使用场景:
主要与其他函数联合使用
map函数
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回
遍历序列,对序列中每个元素进行函数操作,最终获取新的序列。
1.求列表[1,2,3,4,5,6,7,8,9],返回一个n*n 的列表
#一般解决方案 li = [1,2,3,4,5,6,7,8,9] for ind,val in enumerate(li):li[ind] = val * val print(li) # [1, 4, 9, 16, 25, 36, 49, 64, 81]# 高级解决方案 li = [1,2,3,4,5,6,7,8,9] print(list(map(lambda x:x*x,li))) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce函数
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(func,[1,2,3]) 等同于 func(func(1,2),3)
对于序列内所有元素进行累计操作
#接受一个list并利用reduce()求积 from functools import reduce li = [1,2,3,4,5,6,7,8,9] print(reduce(lambda x,y:x * y,li)) # 结果=1*2*3*4*5*6*7*8*9 = 362880
filter函数
filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
对于序列中的元素进行筛选,最终获取符合条件的序列
# 在一个list中,删掉偶数,只保留奇数 li = [1, 2, 4, 5, 6, 9, 10, 15] print(list(filter(lambda x:x % 2==1,li))) # [1, 5, 9, 15]# 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数 li = list(range(1, 200)) print(list(filter(lambda x:int(str(x))==int(str(x)[::-1]),li))) [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]
sorted函数
sorted(iterable, /, *, key=None, reverse=False)
接收一个key
函数来实现对可迭代对象进行自定义的排序
可迭代对象:主要与列表,字符串,元祖,集合和字典
key:接受一个函数,根据此函数返回的结果,进行排序
reverse:排序方向,默认为从小到大,reverse=True为逆向
# 对列表按照绝对值进行排序 li= [-21, -12, 5, 9, 36] print(sorted(li, key = lambda x:abs(x))) # [5, 9, -12, -21, 36] """ sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素:keys排序结果 => [5, 9, 12, 21, 36]| | | | | 最终结果 => [5, 9, -12, -21, 36] """
举例使用:
# 把下面单词以首字母排序 li = ['bad', 'about', 'Zoo', 'Credit'] print(sorted(li, key = lambda x : x[0])) # 输出['Credit', 'Zoo', 'about', 'bad'] """ 对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。 """# 假设我们用一组tuple表示学生名字和成绩: L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] # 请用sorted()对上述列表分别按名字排序 print(sorted(L, key = lambda x : x[0])) # 输出[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]# 再按成绩从高到低排序 print(sorted(L, key = lambda x : x[1], reverse=True)) # 输出[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
转载于:https://www.cnblogs.com/xiao-apple36/p/8577727.html
Python函数学习——匿名函数相关推荐
- python之路——内置函数和匿名函数
楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...
- python在匿名函数作和_python之路——内置函数和匿名函数
阅读目录 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的 ...
- python定义一个匿名函数使用什么关键字_python3----函数、匿名函数
本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,func为函数名 def func(): print( &quo ...
- python匿名函数调用_(Python) 函数、匿名函数
本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,testFun为函数名 def testFun(): print ...
- python在匿名函数作和_python内置函数和匿名函数
楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...
- Python生成器的send方法、递推函数、匿名函数及常用内置函数
1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...
- Python自学记录——返回函数、匿名函数、装饰器与偏函数
国庆节快乐~~虽说今天是假期的最后一天.. 好久没学习Python了..值得高兴的是 <怪物猎人:世界>目前所有的龙我(统枪)都打过一遍了 (/得意). 正题,开始学习.记录: 返回函数 ...
- Python入门篇-匿名函数
Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...
- Python的lambda匿名函数
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话&#x
最新文章
- BERT面向语言理解的深度双向变换预训练
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- QT的QGeoRoutingManager类的使用
- 多层装饰器、带参数装饰器
- [算法] vector删除元素
- thinkphp3.2.3在nginx环境下“__PUBLIC__“路径错误、URL跳转路径错误解决方案
- 源码分析Android Handler是如何实现线程间通信的
- 独家总结| 基于深度学习的目标检测详解
- 使用gdb调试当前运行的程序
- C程序设计--指针(对 “ 多维数组 ” 进行输出操作)
- 深信服 adesk linux 客户端,Sangfor-aDesk巡检工具(深信服桌面云智能交付巡检助手)V2.1 正式版...
- ipad浏览器安装java_360浏览器苹果平板下载
- 做潮人,还是outman?
- 计算机主机usb插口松,台式电脑音频接口坏了or接触不良?用这两个方法轻松解决,还不需要花什么钱...
- 【Codeforces 760 B Frodo and pillows】+ 二分
- 如何自己编写一个交通仿真软件 (开篇) 走火入魔。
- 前端插件日常问题 整理
- Zuul动态路由及动态Filter实现
- 【数学】手写开根号(牛顿迭代法 | 二分)
- excel求方差和标准差的函数_Excel标准差计算函数Stdev和StdevP的用法与区别,包含4个实例...
热门文章
- PROFINET与以太网之间的关系?
- [2G显卡]使用darknet/YOLO训练自己的数据
- C++之erro: no matching function for call to
- fiddler无法抓取到手机数据解决办法
- angularjs 获取复选框的值_《天涯明月刀手游》银两怎么获得 银两快速获取途径一览...
- 为什么有HTTP协议,还要有websocket协议
- KILL Linked Server异常中断会话后一直处于KILLED/ROLLBACK状态
- PPPoE 报文实例
- android开发经典难题,今年安卓开发中碰到的几个稀奇古怪的问题
- [安装之2] 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装