博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.13 匿名函数
阅读量:4665 次
发布时间:2019-06-09

本文共 1330 字,大约阅读时间需要 4 分钟。

8.13 匿名函数

有名函数

基于函数名使用的函数。

def func():    passfunc()

匿名函数

匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。

print(lambda x,y: x+y)# 
at 0x0000028D950DC158>res = lambda x,y:x+yprint(res(1,2))# 3

与内置函数联用

匿名函数通常与max()、sorted()、filter()、sorted()方法联用。

salary_dict = {    'nick': 3000,    'jason': 100000,    'tank': 5000,    'sean': 2000}

1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。

  1. 首先将可迭代对象变成迭代器对象
  2. res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据
print(max(salary_dict,key=lambda k:salary_dict[k]))  # jason

2.如果我们想对上述字典中的人,按照薪资从大到小排序,可以使用sorted()方法。

sorted()工作原理:

  1. 首先将可迭代对象变成迭代器对象
  2. res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值当做判断依据。
print(sorted(salary_dict,key=lambda k:salary_dict[k])) # ['sean', 'nick', 'tank', 'jason']

3.如果我们想对一个列表中的某个人名做处理,可以使用map()方法。

map()工作原理:

  1. 首先将可迭代对象变成迭代器对象
  2. res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后将该函数的返回值作为map()方法的结果之一。
lis = ['jason', 'tank', 'sean']res = map(lambda name:f'{name} sb',lis)print(list(res))# ['jason sb', 'tank sb', 'sean sb']

4.如果我们想筛选除名字中含有'sb'的名字,我们可以使用filter()方法。

filter()工作原理:

  1. 首先将可迭代对象变成迭代器对象
  2. res=next(迭代器对象),将res当做参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下。
lis = ['jason sb', 'tank sb', 'sean sb','nick']res1 = filter(lambda i:i.endswith('sb'),lis)print(list(res1))# ['jason sb', 'tank sb', 'sean sb']

转载于:https://www.cnblogs.com/dadazunzhe/p/11348828.html

你可能感兴趣的文章
HDU1848 Fibonacci again and again 博弈 SG函数
查看>>
iOS-自建iPa应用分发平台
查看>>
12月2日站立会议
查看>>
【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
查看>>
DBA笔记oracle undo_retention参数可动态修改
查看>>
123我爱你
查看>>
HDU 4033 Regular Polygon(几何 + 二分)
查看>>
webgl example1
查看>>
Django基础内容整理
查看>>
DTcms网站伪静态逻辑
查看>>
网络类型判断
查看>>
黑客dos命令大全
查看>>
Java开发必用的工具包
查看>>
https soap链接示例
查看>>
八LWIP学习笔记之用户编程接口(NETCONN)
查看>>
Git Day02,工作区,暂存区,回退,删除文件
查看>>
Docker安装MariaDB
查看>>
如何给app客户端进行埋点?
查看>>
结对第二次—文献摘要热词统计及进阶需求
查看>>
JavaWeb---总结(十三)使用Session防止表单重复提交
查看>>