lambda函数又叫做“匿名函数”。当你完成一件小工作时,直接使用该函数可以让你的工作得心应手。

lambda函数介绍

在Python中,定义函数使用的是def关键字,但是通过lambda关键字来定义的函数,称之为“匿名函数”。

函数的语法如下:

  • lambda 参数:表达式

函数用法如下:

  • ①先写lambda关键字,②然后依次写匿名函数的参数,多个参数之间用逗号连接,③接着是一个冒号,④冒号后面写的是返回的表达式。

需要注意以下几点:

  • lambda函数能接收任意多个参数,但只能返回一个表达式的值;
  • lambda函数是一个函数对象,如果直接赋值给一个变量,这个变量就成了一个函数对象;

当待处理的业务符合匿名函数的特点:多个参数和一个返回值,并且该函数只在一个地方使用,不在其他地方复用,建议使用lambda函数。

lambda函数的简单使用

下面我们写了带有一个参数的匿名函数。

print(lambda x: x + 2)
# <function <lambda> at 0x000001CFE5851EA0>

接着,使用type()函数打印该函数的类型,得到的是一个function函数对象。

print(type(lambda x: x + 2))
# <class 'function'>

将匿名函数传递给一个参数,调用匿名函数。

注意:通过这种方式调用匿名函数,变量名+括号。

a = lambda x: x + 2
print(a(2)) # 4

lambda函数的不同形式

lambda函数中可以不传参数,可以传递一个参数,二个参数,或者传递多个参数。

无参数的lambda函数

不管是有参数还是无参数,调用一定是变量名+括号,即这个括号不能省略,否则返回的是一个function函数对象。

In[1]:x1 = lambda: 88
print(x1()) # 88

单参数的lambda函数

单参数指的是匿名函数中只有一个参数,下面来看一个例子。

lambda x: x + 2
print(b(8)) # 10

多参数的lambda函数

多参数指的是匿名函数中有多个参数,下面来看一个例子。

c = lambda x, y: x * y
print(c(2, 5)) # 10

带分支的lambda函数

有时候我们可以根据给定的参数,来判断接下来需要做什么,这就需要匿名函数结合分支表达式使用了。

d = lambda x: x - 1 if x > 5 else x + 1
print(d(9)) # 8
print(d(3)) # 4

lambda函数与Python内置函数配合使用

其实lambda函数还可以与sorted函数,map函数和filter函数,联合使用。这里以sorted函数为例进行举例说明。

对列表里的字典排序

l = [{'a': 1, 'b': 41}, {'a': 1111, 'b': 24}, {'a': 1111, 'b': 32}]
l_s = sorted(l, key=lambda x: x["b"], reverse=True)
print(l_s) # [{'a': 1, 'b': 41}, {'a': 1111, 'b': 32}, {'a': 1111, 'b': 24}]

对字典进行key排序

m = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
m_s = sorted(m.items(), key=lambda x: x[0])
print(m_s) # [('a', 25), ('b', 20), ('c', 27), ('d', 22)]

对字典进行values排序

n = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
n_s = sorted(n.items(), key=lambda x: x[1])
print(n_s) # [('b', 20), ('d', 22), ('a', 25), ('c', 27)]

其它用法

print(list(map(lambda x: x * x, range(1, 11))))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] print(list(filter(lambda x: x % 2 == 0, range(1, 11))))
# [2, 4, 6, 8, 10]

python基础(补充):lambda匿名函数,用了的,都说好!的更多相关文章

  1. 『Python基础-14』匿名函数 `lambda`

    匿名函数和关键字lambda 匿名函数就是没有名称的函数,也就是不再使用def语句定义的函数 在Python中,如果要声匿名函数,则需要使用lambda关键字 使用lambda声明的匿名函数能接收任何 ...

  2. Python 进阶 之 lambda 匿名函数

    lambda 是个匿名函数,通常用于简单判断或者处理,例如判断一个数的奇偶性,过滤字符串,逻辑运算等等. lambda表达式: >>>lambda x:x*x >>> ...

  3. python学习之lambda匿名函数

    1 Python支持运行时使用“lambda”建立匿名函数(anonymous functions that are not bound to a name). python "lambda ...

  4. python基础一 day16 匿名函数

    def add(x,y): return x+y add = lambda x,y:x+yprint(add(1,2)) dic={'k1':10,'k2':100,'k3':30}def func( ...

  5. Python基础之yield,匿名函数,包与re模块

    一.表达式形式的yield 1.另外一种形式的yield def deco(func): def wrapper(*arges, **kwargs): res = func(*arges, **kwa ...

  6. python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件

    上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...

  7. 《Python》 内置函数补充、匿名函数、递归初识

    一.内置函数补充: 1.数据结构相关(24): 列表和元祖(2):list.tuple list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素). tuple:将一个可迭代对象转 ...

  8. Python 之父为什么嫌弃 lambda 匿名函数?

    Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" ...

  9. Python练习题-1.使用匿名函数对1~1000求和,代码力求简洁。

    Python 练习 标签(空格分隔): Python Python练习题 Python知识点 一.使用匿名函数对1~1000求和,代码力求简洁. 答案: In [1]: from functools ...

  10. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

随机推荐

  1. perl 打印简单的help文档

    更多 PrintHelp.pm #!/usr/bin/perl package PrintHelp; require Exporter; use v5.26; use strict; use utf8 ...

  2. 翻译:《实用的Python编程》01_07_Functions

    目录 | 上一节 (1.6 文件) | 下一节 (2.0 处理数据) 1.7 函数 随着程序开始变大,我们会想要有条理地组织这些程序.本节简要介绍函数.库模块以及带有异常的错误处理. 自定义函数 对你 ...

  3. Markdown简单语法的使用

    Markdown简单语法的使用 目录 Markdown简单语法的使用 前言 标题的设置 字体的设置 1.字体加粗 2.斜体 3.字体加粗斜体 3.删除线 引用 列表的使用 插入图片 分割线 代码的书写 ...

  4. 使用 Castle 实现 AOP,以及 Autofac 集成 Castle

    Castle 是 2003 年诞生于 Apache Avalon 项目,目的是为了创建一个IOC 框架.发展到现在已经有四个组件: ORM组件:ActiveRecord IOC组件:Windsor 动 ...

  5. mbatis中的#{}和${}

    #{}和${}的区别是什么?a.#{}是预编译处理,${}是字符串替换. b.Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set ...

  6. Hyperf-事件机制+异常处理

    Hyperf-事件机制+异常处理 标签(空格分隔): php, hyperf 异常处理器 在 Hyperf 里,业务代码都运行在 Worker 进程 上,也就意味着一旦任意一个请求的业务存在没有捕获处 ...

  7. 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)

    每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...

  8. 由剑指offer引发的思考——对象中虚函数指针的大小

    先看一个简单的问题: 一.定义一个空的类型,对于其对象我们sizeof其大小,是1字节.因为我们定义一个类型,编译器必须为其分配空间,具体分配多少是编译器决定,vs是1字节,分配在栈区. 那,这一个字 ...

  9. 后端程序员之路 51、A Tour of Go-1

    # A Tour of Go    - go get golang.org/x/tour/gotour    - https://tour.golang.org/    # welcome    - ...

  10. Latency 和 Delay 区别

    时延:Latency 指的是一个报文进入一台设备以致这台设备所经历的时间.实际上考验的是报文在这台设备上消耗的时间.时间越短,这台设备的性能越高.   延时:Delay 是指一个操作和另个一个操作之间 ...