lambda表达式的主要作用就是化简代码。

匿名函数一般都是作为参数使用,其他地方一般不会使用。

1、lambda的应用场景

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。

2、lambda语法

  1. lambda 参数列表 表达式

注意:

  • lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
  • lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

3、快速入门

  1. # 函数
  2. def fn1():
  3. return 200
  4. print(fn1) # <function fn1 at 0x0000000002665948>
  5. print(fn1()) # 200
  6. # lambda表达式
  7. # lambda 参数列表: 表达式
  8. fn2 = lambda: 100
  9. print(fn2) # <function <lambda> at 0x00000000026658B8>
  10. print(fn2()) # 100

注意:直接打印lambda表达式,输出的是此lambda的内存地址。

图示如下:

4、示例:计算a + b

(1)函数实现

  1. def add(a, b):
  2. return a + b
  3. result = add(1, 2)
  4. print(result) # 3

思考:需求简单,是否代码多?

(2)lambda实现

  1. fn1 = lambda a, b: a + b
  2. print(fn1(1, 2)) # 3

5、lambda的参数形式

(1)无参数

  1. fn1 = lambda: 100
  2. print(fn1()) # 100

(2)一个参数

  1. fn1 = lambda a: a
  2. print(fn1('hello world')) # hello world

(3)默认参数

  1. fn1 = lambda a, b, c=100: a + b + c
  2. print(fn1(10, 20)) # 130
  3. print(fn1(10, 20, 200)) # 230

(4)可变参数:*args

  1. fn1 = lambda *args: args
  2. print(fn1(10, 20, 30)) # (10, 20, 30)
  3. print(fn1(10)) # (10,)

注意:这里的可变参数传入到lambda之后,返回值为元组。

(5)可变参数:**kwargs

  1. fn1 = lambda **kwargs: kwargs
  2. print(fn1(name='Python')) # {'name': 'Python'}
  3. print(fn1(name='python', age=20)) # {'name': 'python', 'age': 20}

注意:这里的可变参数传入到lambda之后,返回值为字典。

6、lambda的应用

(1)带判断的lambda

  1. # 需求:比较两个数大小,谁大返回谁
  2. fn1 = lambda a, b: a if a > b else b
  3. print(fn1(1000, 500))

(2)列表数据按字典key的值排序

  1. students = [
  2. {'name': 'TOM', 'age': 20},
  3. {'name': 'ROSE', 'age': 19},
  4. {'name': 'Jack', 'age': 22}
  5. ]
  6. # 按name值升序排列(x表示升降序的元素,这里是字典变量)
  7. students.sort(key=lambda x: x['name'])
  8. print(students)
  9. # 按name值降序排列(reverse=True 降序)
  10. students.sort(key=lambda x: x['name'], reverse=True)
  11. print(students)
  12. # 按age值升序排列
  13. students.sort(key=lambda x: x['age'])
  14. print(students)

『无为则无心』Python函数 — 34、lambda表达式的更多相关文章

  1. 『无为则无心』Python函数 — 25、Python中的函数

    目录 1.函数的使用 (1)定义函数 (2)调用函数 (3)使用函数的注意事项 2.函数的参数 3.实参的类型 Python函数的说明: Python中函数的应用非常广泛,前面章节中我们已经接触过多个 ...

  2. 『无为则无心』Python函数 — 26、Python函数参数的传递方式

    目录 1.位置参数 2.关键字参数 3.缺省参数(默认参数) 4.不定长参数(可变参数) (1)包裹位置传递 (2)包裹关键字传递 5.位置参数.默认参数.可变参数的混合使用 6.拓展:参数解包 提示 ...

  3. 『无为则无心』Python函数 — 28、Python函数的简单应用

    目录 1.函数嵌套调用 2.Python函数的简单应用 (1)打印线条 (2)函数计算 (3)打印图形 3.函数的说明文档 (1)函数的说明文档的作用 (2)函数说明文档的语法 (3)查看函数的说明文 ...

  4. 『无为则无心』Python函数 — 27、Python函数的返回值

    目录 1.返回值概念 2.return关键字的作用 3.返回值可以返回的数据类型 4.函数如何返回多个值 5.fn5 和 fn5()的区别 6.总结: 1.返回值概念 例如:我们去超市购物,比如买饮料 ...

  5. 『无为则无心』Python函数 — 29、Python变量和参数传递

    目录 1.Python的变量 (1)Python变量不能独立存在 (2)变量是内存中数据的引用 (3)注意点 2.了解变量的引用 3.Python的参数传递(重点) (1)示例 (2)结论 (3)总结 ...

  6. 『无为则无心』Python函数 — 30、Python变量的作用域

    目录 1.作用于的概念 2.局部变量 3.全局变量 4.变量的查找 5.作用域中可变数据类型变量 6.多函数程序执行流程 1.作用于的概念 变量作用域指的是变量生效的范围,在Python中一共有两种作 ...

  7. 『无为则无心』Python函数 — 31、命名空间(namespace)

    目录 1.什么是命名空间 2.三种命名空间 3.命名空间查找顺序 4.命名空间的生命周期 5.如何获取当前的命名空间 1.什么是命名空间 命名空间指的是变量存储的位置,每一个变量都需要存储到指定的命名 ...

  8. 『无为则无心』Python函数 — 32、递归

    目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...

  9. 『无为则无心』Python函数 — 33、高阶函数

    目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...

随机推荐

  1. lucene索引的增、删、改

    package com.hope.lucene;import org.apache.lucene.document.Document;import org.apache.lucene.document ...

  2. 注解开发中的@Results注解使用

    package com.hope.dao;import com.hope.domain.User;import com.sun.xml.internal.bind.v2.model.core.ID;i ...

  3. 【JAVA今法修真】 第三章 关系非关系 redis法器

    您好,我是南橘,万法仙门的掌门,刚刚从九州世界穿越到地球,因为时空乱流的影响导致我的法力全失,现在不得不通过这个平台向广大修真天才们借去力量.你们的每一个点赞,每一个关注都是让我回到九州世界的助力,兄 ...

  4. Jenkins检测Maven项目是否引用快照包

    目录 一.简介 二.具体 一.简介 生产环境不允许使用快照包,但人为规定终究不如脚本进行检测,所以在打war包,检测是否引用了快照包,如果引用了宣布打包失败 二.具体 1.在pipeline的scri ...

  5. 转: 再谈select, iocp, epoll,kqueue及各种I/O复用机制

    首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select and poll) signal drive ...

  6. AT2664 [AGC017A] Biscuits 题解

    Content 有一个长度为 \(n\) 的数列 \(a\).你希望从中选出一些数,使得这些数的和对 \(2\) 取模后的结果为 \(P\).求方案数. 数据范围:\(1\leqslant n\leq ...

  7. SP8374 PARKET1 - PARKET 题解

    Content 有一个 \(l\times w\) 大小的网格,其四周均被染成了红色,其余部分是棕色,已知红色网格与棕色网格的数量,求 \(l\) 与 \(w\) 的值. Solution 接下来给各 ...

  8. JS自动播放音频 无效chrome设置 (Uncaught (in promise) DOMException: play() failed because the user didn't interact)

    Chrome的autoplay政策在2018年4月做了更改.新的行为:浏览器为了提高用户体验,减少数据消耗,现在都在遵循autoplay政策,Chrome的autoplay 政策非常简单 muted ...

  9. Stun协议实现

    在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信(即所谓的P2P通信),而不需 ...

  10. C++实现二叉搜索书(参考算法导论)

    1 #include <iostream> 2 using namespace std; 3 4 struct node 5 { 6 // 数据域 7 int data; 8 9 // 左 ...