• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

桃花源主

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

匿名函数

1.lambda

lambda 参数1,参数2,参数3,。。。。。:expression

lambda x,y,z:x+y+z

1.1 调用方式

1.1.1 方式一

res = lambda(x,y,z:x+y+z)(1,2,3) 直接赋值,直接得出结果

1.1.2 方式二

func = lambda x,y,z:x+y+z 
res = func(1,2,3)

匿名函数与有名函数有相同的作用域,但是匿名函数意味着引用计数为0,使用一次就释放,所以匿名函数用于临时使用一次的场景。

2.内置函数 map min sort

内置max与min都支持迭代器协议,工作原理都是迭代字典,取得是字典的键,因而比较的是键的最大和最小值,而我们想要的是比较值的最大值与最小值

max(sarlaies,key=lambda k:salaries[k])
min(sarlaies,key=lambda k:salaries[k])

同理,我们直接对字典进行排序,默认也是按照字典的键去排序的

sroted(salaries)

迭代对象arrary=[1,2,3,4,5]

  • map:可以接收两个参数,一个是函数,另一个是可迭代对象,得到的仍然是迭代器
res = map(lambda x:x**2,arry)
  • reduce: 可以接收3个参数,一个是参数,一个是可迭代对象,第三个是初始值
python3中,reduce被集中到模块functools中,需要导入使用
from functools import reduce
res = reduce(lambda x,y:x+y,array)
解析:
1.没有初始值,reduce函数会先迭代一次arrary得到的值作为初始值,作为第一个值数传给x,然后继续迭代一次
arrary,得到的值作为第二个值传给主,运算结果为3
2.将上一次reduce运算的结果作为第一个值传给x,然后迭代一次arrary得到的结果作为第二个值 传给给y,依次
类推,直到迭代完arrary的所有元素,得到最终的结果15
  • filter函数会依次迭代,得到的值依次传给匿名函数,如果匿名函数的返回值为真,则过滤出该元素,而filter函数得到的结果仍然是迭代器
对arrary进行过滤操作,过滤出大于3的元素
res = filter(lambda x:x>3,arrary)
list(res)     4,5

posted on 2021-02-01 06:33  桃花源主  阅读(21)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3