什么是Python中的匿名函数


Posted in Python onJune 02, 2020

匿名函数

lambda x , y : x+y

1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的。

2.匿名函数的参数规则、作用域关系与有名函数是一样的。

3.匿名函数的函数体通常应该是 一个表达式,该表达式必须要有一个返回值。

f=lambda x,n:x ** n

print(f(2,3))

lambda匿名函数的应用:**max,min,sorted,map,reduce,filter**

求工资最高的人:max

salaries={
  'egon':3000,
  'alex':100000000,
  'wupeiqi':10000,
  'yuanhao':2000
}
def get(k):
  return salaries[k]
print(max(salaries,key=get)) #'alex' 
print(max(salaries,key=lambda x:salaries[x]))
info = [
  {'name': 'egon', 'age': '18', 'salary': '3000'},
  {'name': 'wxx', 'age': '28', 'salary': '1000'},
  {'name': 'lxx', 'age': '38', 'salary': '2000'}
]
max(info, key=lambda dic: int(dic['salary']))
max([11, 22, 33, 44, 55])

求工资最低的人:min

salaries={
  'egon':3000,
  'alex':100000000,
  'wupeiqi':10000,
  'yuanhao':2000
}
print(min(salaries,key=lambda x:salaries[x]))  # 'yuanhao' 
 info=[
      {'name':'egon','age':'18','salary':'3000'},
      {'name':'wxx','age':'28','salary':'1000'},
      {'name':'lxx','age':'38','salary':'2000'}
    ]
min(info,key=lambda dic:int(dic['salary']))

sort把薪资字典,按照薪资的高低排序

salaries={
  'egon':3000,
  'alex':100000000,
  'wupeiqi':10000,
  'yuanhao':2000
}
alaries=sorted(salaries) # 默认按照字典的键排序
print(salaries)
# salaries=sorted(salaries,key=lambda x:salaries[x]) #默认是升序排
alaries=sorted(salaries,key=lambda x:salaries[x],reverse=True) #降序
print(salaries)
info=[
      {'name':'egon','age':'18','salary':'3000'},
      {'name':'wxx','age':'28','salary':'1000'},
      {'name':'lxx','age':'38','salary':'2000'}
    ]
l=sorted(info,key=lambda dic:int(dic['salary']))

map 映射, 循环让每个元素执行函数,将每个函数执行的结果保存到新的列表中

v1 = [11,22,33,44]
result = map(lambda x:x+100,v1) # 第一个参数为执行的函数,第二个参数为可迭代元素.
print(list(result)) # [111,122,133,144]
names=['alex','wupeiqi','yuanhao','egon']
res=map(lambda x:x+'_NB' if x == 'egon' else x + '_SB',names)
print(list(res))

reduce , 对参数序列中元素进行累积

import functools
v1 = ['wo','hao','e']
def func(x,y):
  return x+y
result = functools.reduce(func,v1) 
print(result)  # wohaoe
result = functools.reduce(lambda x,y:x+y,v1)
print(result)  # wohaoe
from functools import reduce
l=['my','name','is','alex','alex','is','sb']
res=reduce(lambda x,y:x+' '+y+' ',l)
print(res)
#my name is alex alex is sb

filter , 按条件筛选

result=filter(lambda x:x > 2,[1,2,3,4])
print(list(result))
v1 = [11,22,33,'asd',44,'xf']
# 一般做法
def func(x):
  if type(x) == int:
    return True
  return False
result = filter(func,v1)
print(list(result))   # [11,22,33,44]
# 简化做法
result = filter(lambda x: True if type(x) == int else False ,v1)
print(list(result))
# 极简做法
result = filter(lambda x: type(x) == int ,v1)
print(list(result))
names=['alex_sb','wxx_sb','yxx_sb','egon']
res=filter(lambda x:True if x.endswith('sb') else False,names)
res=filter(lambda x:x.endswith('sb'),names)
print(list(res))    #['alex_sb', 'wxx_sb', 'yxx_sb']
ages=[18,19,10,23,99,30]
res=filter(lambda n:n >= 30,ages)
print(list(res))    #[99, 30]
salaries={
  'egon':3000,
  'alex':100000000,
  'wupeiqi':10000,
  'yuanhao':2000
}
res=filter(lambda k:salaries[k] >= 10000,salaries)
print(list(res))      #['alex', 'wupeiqi']

内容扩展:

匿名函数调用

步骤一:将创建好的匿名函数通过一个变量来去接收。

步骤二:使用变量再去调用匿名函数。

举例

第一步: 创建一个匿名函数,作用是实现两个数的和。

lambda num1 , num2 : num1 + num2

第二步:使用一个变量来去接收这个匿名函数

sum = lambda num1 , num2 : num1 + num2

第三步:调用此匿名函数

sum(10 , 20)

到此这篇关于什么是Python中的匿名函数的文章就介绍到这了,更多相关Python匿名函数知识点总结内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python下载懒人图库JavaScript特效
May 28 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
Python字典对象实现原理详解
Jul 01 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
python中pickle模块浅析
Dec 29 Python
学习python需要有编程基础吗
Jun 02 #Python
python中if及if-else如何使用
Jun 02 #Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 #Python
python编写一个会算账的脚本的示例代码
Jun 02 #Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 #Python
什么是Python中的顺序表
Jun 02 #Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 #Python
You might like
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
JavaScript实现区块链
2018/03/14 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
python 删除非空文件夹的实例
2018/04/26 Python
python中if及if-else如何使用
2020/06/02 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
Java的基础面试题附答案
2016/01/10 面试题
Internet体系结构
2014/12/21 面试题
班主任工作年限证明
2014/01/12 职场文书
初婚未育证明
2014/01/15 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
教师旷工检讨书
2015/08/15 职场文书
python基础之文件操作
2021/10/24 Python
Java 多态分析
2022/04/26 Java/Android