匿名函数

匿名函数就是不需要显式的指定函数名。

关键字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()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的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函数学习——匿名函数相关推荐

  1. python之路——内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  2. python在匿名函数作和_python之路——内置函数和匿名函数

    阅读目录 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的 ...

  3. python定义一个匿名函数使用什么关键字_python3----函数、匿名函数

    本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,func为函数名 def func(): print( &quo ...

  4. python匿名函数调用_(Python) 函数、匿名函数

    本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,testFun为函数名 def testFun(): print ...

  5. python在匿名函数作和_python内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  6. Python生成器的send方法、递推函数、匿名函数及常用内置函数

    1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...

  7. Python自学记录——返回函数、匿名函数、装饰器与偏函数

    国庆节快乐~~虽说今天是假期的最后一天.. 好久没学习Python了..值得高兴的是 <怪物猎人:世界>目前所有的龙我(统枪)都打过一遍了 (/得意). 正题,开始学习.记录: 返回函数 ...

  8. Python入门篇-匿名函数

    Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...

  9. Python的lambda匿名函数

    lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话&#x

最新文章

  1. BERT面向语言理解的深度双向变换预训练
  2. WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
  3. QT的QGeoRoutingManager类的使用
  4. 多层装饰器、带参数装饰器
  5. [算法] vector删除元素
  6. thinkphp3.2.3在nginx环境下“__PUBLIC__“路径错误、URL跳转路径错误解决方案
  7. 源码分析Android Handler是如何实现线程间通信的
  8. 独家总结| 基于深度学习的目标检测详解
  9. 使用gdb调试当前运行的程序
  10. C程序设计--指针(对 “ 多维数组 ” 进行输出操作)
  11. 深信服 adesk linux 客户端,Sangfor-aDesk巡检工具(深信服桌面云智能交付巡检助手)V2.1 正式版...
  12. ipad浏览器安装java_360浏览器苹果平板下载
  13. 做潮人,还是outman?
  14. 计算机主机usb插口松,台式电脑音频接口坏了or接触不良?用这两个方法轻松解决,还不需要花什么钱...
  15. 【Codeforces 760 B Frodo and pillows】+ 二分
  16. 如何自己编写一个交通仿真软件 (开篇) 走火入魔。
  17. 前端插件日常问题 整理
  18. Zuul动态路由及动态Filter实现
  19. 【数学】手写开根号(牛顿迭代法 | 二分)
  20. excel求方差和标准差的函数_Excel标准差计算函数Stdev和StdevP的用法与区别,包含4个实例...

热门文章

  1. PROFINET与以太网之间的关系?
  2. [2G显卡]使用darknet/YOLO训练自己的数据
  3. C++之erro: no matching function for call to
  4. fiddler无法抓取到手机数据解决办法
  5. angularjs 获取复选框的值_《天涯明月刀手游》银两怎么获得 银两快速获取途径一览...
  6. 为什么有HTTP协议,还要有websocket协议
  7. KILL Linked Server异常中断会话后一直处于KILLED/ROLLBACK状态
  8. PPPoE 报文实例
  9. android开发经典难题,今年安卓开发中碰到的几个稀奇古怪的问题
  10. [安装之2] 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装