python lambda函数及三个常用的高阶函数


Posted in Python onFebruary 05, 2020

进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量。但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数。该函数就是Python中的Lambda函数,下面就来为大家解析python—lambda函数,三个常用的高阶函数。

为什么要使用Python Lambda函数?

匿名函数可以在程序中任何需要的地方使用,但是这个函数只能使用一次,即一次性的。因此Python Lambda函数也称为丢弃函数,它可以与其他预定义函数(如filter(),map()等)一起使用。相对于我们定义的可重复使用的函数来说,这个函数更加简单便捷。

"""
lambda 参数列表 : 返回值
lambda 参数形式:
  1.无参数:lambda:100
  2.一个参数:lambda a: a
  3.默认参数:lambda a, b, c=100: a + b + c
  4.可变参数:*args,返回元组
  lambda *args: args
  5.可变参数:*kwargs,返回字典
  lambda **kwargs: kwargs
lambda 应用:简化代码
  1.判断,lambda a, b: a if a > b else b
  2.列表数据按字典 key 值排序
"""
# def fn1():
#   return 100
# def de1():
#   r = fn1()
#   print(r)
#   r2 = lambda: 100
#   print(r2)      # 地址:<function main.<locals>.<lambda> at 0x00CCD6E8>
#   print(r2())     # 返回值:100
# def test2():
"""
lambda 测试案例
"""
#   fn1 = lambda a, b: a + b
#   print(fn1(1, 2))
#   fn2 = lambda *args: args
#   print(fn2(1, 2, 3))
#   print(fn2(1, 3))
#   print(fn2(1))    # (1,)
#   fn3 = lambda **kwargs: kwargs
#   print(fn3(name='py', age=30))
#
#   fn4 = lambda a, b: a if a > b else b
#   print(fn4(100, 200))
#
#   student = [{'name': 'a', 'id': '1', 'tel': 'a1'},
#     {'name': 'b', 'id': '2', 'tel': 'b2'},
#     {'name': 'c', 'id': '3', 'tel': 'c3'}]
#   student.sort(key=lambda x: x['name'])
#   print(student)
#   student.sort(key=lambda x: x['name'], reverse=True)
#   print(student)
#   student.sort(key=lambda x: x['id'])
#   print(student)
"""
高阶函数:def add_num(a, b, f)
内置高阶函数:
  1.map(func, list):
  将func 应用于list中的每一个元素,返回一个迭代器
  2.reduce(func, list):
  计算结果与下一个数据做累积计算,必须有两个参数
  from functools import reduce
  3.filter(func, list):
  过滤掉不符合条件的元素,返回一个filter对象,可用list()转换
"""
# def add_num(a, b, f):
#   # 传入函数 f
#   return f(a) + f(b)
# def func(x):
#   return x ** 2
from functools import reduce
def add_2(a, b):
  return a + b
def func3(x):
  return x % 2 == 0
def main():
  """
  体验高阶函数
  :return:
  """
  # print(abs(-2))     # 求绝对值
  # print(round(0.1))    # 四舍五入
  # s1 = add_num(1, 2, abs)
  # s2 = add_num(1, 2.5, round)
  # print(s1, s2)
  list1 = [1, 2, 3, 4, 5]
  # map(func, list1)
  # print(list(map(func, list1)))
  # s = reduce(add_2, list1)
  # print(s)
  r = filter(func3, list1)
  print(r)    # <filter object at 0x00CAE2E0>
  print(list(r)) # [2, 4]
if __name__ == '__main__':
  main()

总结

以上所述是小编给大家介绍的python lambda函数及三个常用的高阶函数,希望对大家有所帮助!

Python 相关文章推荐
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
Python 正则表达式实现计算器功能
Apr 29 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python列表的逆序遍历实现
Apr 20 Python
python中取绝对值简单方法总结
Jul 24 Python
ASP.NET Core中的配置详解
Feb 05 Python
Python与C/C++的相互调用案例
Mar 04 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 #Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 #Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 #Python
tensorflow之并行读入数据详解
Feb 05 #Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 #Python
tensorflow 自定义损失函数示例代码
Feb 05 #Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 #Python
You might like
php中http与https跨域共享session的解决方法
2014/12/20 PHP
微信API接口大全
2015/04/15 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
ThinkPHP安装和设置
2015/07/27 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
jquery选择器(常用选择器说明)
2010/09/28 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python适合人工智能的理由和优势
2019/06/28 Python
python实现简单成绩录入系统
2019/09/19 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
C++面试题目
2013/06/25 面试题
JSF界面控制层技术
2013/06/17 面试题
自我介绍演讲稿
2014/01/15 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
财产保全担保书范文
2014/04/01 职场文书
三方合作协议书范本
2014/04/18 职场文书
新文化运动的基本口号
2014/06/21 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
保送生自荐信范文
2015/03/26 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
基于angular实现树形二级表格
2021/10/16 Javascript