lambda 表达式,又称匿名函数,即,函数没有具体的名称,常用来表示内部仅包含 1 行表达式的函数。

使用 lambda 编写的代码更加简洁紧凑,但是 lambda 函数支持的功能却是十分有限的,目前 PEP8 已经不建议使用 lambda,而是推荐使用 def 去定义一个函数,即便如此,作为 Python 程序员,认识和了解该匿名函数还是有必要的。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda 的语法:lambda argument(s):expression

lambda 函数可以有很多个参数,但是只能有一个表达式。lambda 操作符不能有任何声明,它返回一个函数对象,可以将此函数对象赋值给任何变量。

lambda 函数简单示例:

lambda x, y: x * y     # 函数输入是 x 和 y,输出是它们的积 x*y
lambda:None     # 函数没有输入参数,输出是 None
>>> a = lambda x: x+1
>>> a(1)
2# 用 def 函数表示如下:>>> def a(x):return x+1
>>> a(1)
2

lambda 函数与 def 的主要不同点:

  • lambda 可以立刻传递(无需变量),自动返回结果;
  • lambda 在内部只能包含一行代码;
  • lambda 是一个为编写简单的函数而设计的,而 def 用来处理更大的任务;
  • lambda 可以定义一个匿名函数,而 def 定义的函数必须有一个名字。

lambda 函数的优势:

  • 对于单行函数,使用 lambda 表达式可以省去定义函数的过程,让代码更加简洁;
  • 对于不需要多次复用的函数,使用 lambda 表达式可以在用完之后立即释放,提高程序执行的性能。

lambda 函数经常用于一些内置函数中:

map() 函数:遍历序列,对序列中每个元素进行操作,此时 lambda 函数用于指定对列表中每一个元素的共同操作条件。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7 ,8]
>>> list3 = map(lambda a, b: a + b, list1, list2)     # 将两个列表中对应的元素相加
>>> print(list3)
<map object at 0x000001EA57C07780>
>>> print(list(list3))
[6, 8, 10, 12]

filter() 函数:对于序列中的元素进行筛选操作,此时 lambda 函数用于指定过滤列表元素的条件。

>>> list1 = [1, 2, 3, 4]
>>> list2 = filter(lambda a: a > 2, list1)     # 筛选出列表中大于 2 的元素
>>> print(list2)
<filter object at 0x000001EA57C07898>
>>> print(list(list2))
[3, 4]

reduce() 函数:对于序列中所有元素进行累积操作,此时 lambda 函数用于指定列表中两两相邻元素的累积条件。

>>> from functools import reduce
>>> list1 = [1, 2, 3, 4]
>>> list2 = reduce(lambda a, b: a + b, list1)     # 两两相邻元素进行相加操作
>>> print(list2)
10
>>> list2 = reduce(lambda a, b: a * b, list1)     # 两两相邻元素进行相乘操作
>>> print(list2)
24

sorted() 函数:对于序列中的元素进行排序操作,此时 lambda 函数用于指定对列表中所有元素进行排序的条件。

>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8]
>>> list2 = sorted(list1, key = lambda a: abs(4-a))     # 将列表元素按照与 4 的距离从小到大进行排序
>>> print(list2)
[4, 3, 5, 2, 6, 1, 7, 8]

其他资料:《不要在Python中编写 lambda 表达式了,不建议大家使用它》

【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用相关推荐

  1. python匿名函数调用_python之内置函数,匿名函数

    内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...

  2. Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)

    文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...

  3. python葵花宝典第15式-匿名函数、内置函数、映射函数

    python葵花宝典第15式-匿名函数.内置函数.映射函数 15.1 lambda函数(匿名函数) 匿名函数并不是没有函数名字 注意: (1)函数的参数可以有多个,多个参数之间用逗号隔开 (2)匿名函 ...

  4. Python函数05/内置函数/闭包

    Python函数05/内置函数/闭包 内容大纲 1.内置函数(二) 2.闭包 1.内置函数(二) #(abs()) 绝对值--返回的都是正数 #print([abs(i) for i in lst]) ...

  5. python求最小值不能使用min和sotred_python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  6. python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及

    Python--函数式编程.高阶函数及内置函数 函数式编程 一.不可变数据:不用变量保存状态不修改变量 二.第一类对象:函数即"变量" 1.函数名可以当做参数传递 2.返回值可以是 ...

  7. python __call__一般用在哪些地方_Python __call__内置函数的作用和用法

    开学了进入了实验室,需要协助大师兄做事,主要是OpenStack中的代码解析,但是涉及很多python高级用法,一时间有点麻烦,在做项目的同时慢慢更新博客.这次先写一下__call__的用法,因为经常 ...

  8. decode函数_Python 内置函数总一

    内置函数 python内置函数,截至python3.6.2版本之前一共68个内置函数,内置函数是可以直接使用的函数. Python标准库/内置函数链接:点击此处 内置函数分类 作用域相关 基于字典的形 ...

  9. Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)

    Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...

  10. html中写嵌套的js函数,Javascript 嵌套函数 - 递归函数 - 内置函数详解

    在了解了函数的定义和函数调用外,下面我们来介绍一下JavaScript中几种特殊的函数. JavaScript特殊函数有3种: (1)嵌套函数: (2)递归函数: (3)内置函数: 下面详细给大家讲解 ...

最新文章

  1. c 连接oracle的参数,[20210203]19c登录连接改变一些参数.txt
  2. CMake编译Widget UI Qt程序
  3. mysql 逻辑处理_mysql 逻辑查询处理流程
  4. 坑爹的属性,android:descendantFocusability用法简析
  5. Linux中的组合键
  6. sqlserver2008 创建支持文件流的数据库
  7. 用0和5凑被90整除的max数(洛谷P2192题题解,Java语言描述)
  8. Linux报错:/etc/sudoers is world writable
  9. 图神经网络(GNN)综述
  10. python金融风控评分卡模型和数据分析(加强版)
  11. 大数据毕设/课设 - 基于大数据的可视化分析模板
  12. 入门系列之在Ubuntu上使用Netdata设置实时性能监控
  13. python绘制三角函数图像_用python画三角函数
  14. David Marr-《视觉计算理论》-思想总结
  15. LOAP引擎:clickhouse06:简单介绍几个JSON函数
  16. amazeUI的icon图标库
  17. 兼容android模拟器的微信apk,Android模拟器中安装apk的方法
  18. php 处理eml,PHP读取、解析eml文件及生成网页详解
  19. geogebra画一段椭圆
  20. Python爬虫与信息提取(五)爬虫实例:爬取新浪微博热搜排名

热门文章

  1. BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )
  2. 几个颇有创意的网站推广方法(推荐)
  3. [剑指offer]面试题第[58-2]题[JAVA][左旋转字符串][拼接]
  4. [Leetcode][第315题][JAVA][计算右侧小于当前元素的个数][暴力][归并排序+索引数组]
  5. [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]
  6. java中的sql语句书写_Java中sql语句之通配符*
  7. 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
  8. python筛选法求素数讲解_埃氏筛选法求素数 Python
  9. Android studio aar包多层嵌套,Add library ‘Gradle: __local_aars__: 。。。unspecified@jar‘ to classpath
  10. 字节跳动专家会_字节跳动招聘直播策略运营专家/经理/海外财务AR BP,ACCA优先...