新手入门,深入解析 python lambda表达式

news/2024/12/13 4:45:53/

lambda 表达式是 Python 中的匿名函数。它接受任意数量的参数,并返回一个单个表达式的值。它的语法格式如下:
lambda arguments: expression

文章目录

    • lambda 函数原型解释
    • lambda 函数用作其它参数
    • lambda 函数高级的技巧
      • 多个参数
      • 返回多个值
      • 条件表达式
      • 嵌套 lambda 函数
    • lambda 实现闭包
    • lambda 注意事项
    • 总结

lambda 函数原型解释

在上述语法格式中, arguments 是参数列表,可以包含任意数量的参数, expression 是单个表达式,其值将作为函数的返回值。

下面是一个使用 lambda 表达式创建的计算两个数和的函数:

sum = lambda a, b: a + b
print(sum(33, 44)) # 输出 77

lambda 表达式的优势在于其简洁和易读性。

lambda 函数用作其它参数

lambda 函数可以作为参数传递给其它函数,这样可以使代码更简洁和灵活。
例如,我们可以使用 lambda 函数作为 sorted 函数的第二个参数,以排序一个列表:

numbers = [2, 3, 4, 5]
sorted_numbers = sorted(numbers, key=lambda x: x * -1)
print(sorted_numbers)

运行代码得到如下输出。

在这里插入图片描述

在上述代码中我们传递了一个 lambda 函数给 sorted() 函数的 key 参数。该函数接受一个参数 x ,并将其乘以 -1 ,以便将列表以降序排列。

lambda 函数还可以作为其它高阶函数(如 map()filter() )的参数,以实现更复杂的计算。例如,我们可以使用 lambda 函数和 map 函数来计算一个列表中所有数字的平方:

numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)

lambda 函数高级的技巧

多个参数

lambda 函数可以接受多个参数,并在函数体内对它们进行处理,例如:

sum = lambda x, y: x + y
result = sum(1, 2)
print(result)

返回多个值

lambda 函数可以返回多个值,并以元组形式返回。

divide = lambda x, y: (x / y, x % y)
result = divide(10, 3)
print(result) 

运行代码得到如下输出。

(3.3333333333333335, 1)

条件表达式

lambda 函数可以嵌套其他函数,并在函数体内使用条件语句。

get_sign = lambda x: "开心" if x >= 0 else "不开心"
result = get_sign(-5)
print(result)

嵌套 lambda 函数

可以在一个 lambda 函数内嵌套另一个 lambda 函数

mult = lambda x: (lambda y: x * y)
result = mult(3)(4)
print(result)

lambda 实现闭包

在 Python 中,lambda 函数可以实现闭包。

def make_adder(x):return lambda y: x + yadd_10 = make_adder(10)
add_20 = make_adder(20)print(add_10(5)) # 15
print(add_20(5)) # 25

在上述代码中首先定义了一个名为 make_adder() 的函数,它接收一个参数 x ,并返回一个 lambda 函数。lambda 函数接收一个参数 y ,并返回 x + y 的值。

然后通过调用 make_adder(10)make_adder(20) ,我们分别创建了两个闭包 add_10 和 add_20,它们分别对应 x = 10 和 x = 20 的情况。

最后当我们调用 add_10(5) 时,它会返回 10 + 5 = 15 ;当我们调用 add_20(5) 时,它会返回 20 + 5 = 25

lambda 注意事项

  • 代码长度:lambda 函数只能写成一行,长度需要保持在可接受的范围内。
  • 可读性:对于较长的代码块,最好使用正常的函数定义,以提高代码的可读性。
  • 错误处理:lambda 函数不支持自定义的异常处理,因此需要在调用时小心处理。

lambda 函数并不适合复杂的逻辑或计算,它们通常是用来快速定义简单函数的。

总结

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 864 篇原创博客

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

http://www.ppmy.cn/news/21930.html

相关文章

我通过 tensorflow 预测了博客的粉丝数

前言:由于最近接触了 tensorflow.js,出于试一下的心态,想通过线性回归预测一下博客的粉丝走向和数量,结果翻车了。虽然场景用错地方,但是整个实战方法用在身高体重等方面的预测还是有可行性,所以就记录下来…

redis加锁的几种方法

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,…

WebRTC SDP协议--新属性

一 Plan B、Unified Plan Unified Plan:每路视频流都有一个mvideo的描述。比如:有2路视频,有2个mvideo。 Plan B:无论几路流,只有1个mvideo。 描述不了的情况:ssrc对应的编码格式不同,一个H26…

mysql global index_mysql_fullindex全文索引

MySQL 5.7.6 开始,引入了一个 ngram 全文分析器支持汉语无空格分隔符 事实上,MyISAM 存储引擎对全文索引的支持有很多的限制,例如表级别锁对性能的影响、数据文件的崩溃、崩溃后的恢复等,这使得 MyISAM 的全文索引对于很多的应用…

【C++】内联函数

【C】内联函数 文章目录【C】内联函数1、内联函数概念2、内联函数的特性2.1 空间与时间2.2 忽略的内联函数2.3 声明和定义3、总结1、内联函数概念 函数是一个可以重复使用的代码块,CPU 会一条一条地挨着执行其中的代码。CPU 在执行主调函数代码时如果遇到了被调函数…

Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用

1&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.5.RELEASE</version></dependency> NotEmpty、NotBlank、NotNull 包的位置…

QT opencv 学习day02 基本数据结构 point Scalar Size Rect Mat 等等

1.point &#xff08;画点&#xff09; 1. 函数原型&#xff1a; //二维的点 typedef Point_<int> Point2i; typedef Point_<int64> Point2l; typedef Point_<float> Point2f; typedef Point_<double> Point2d; typedef Point2i Point;//三维的点…

Go编程规范和性能调优(三)——规范编码和性能优化

文章目录一、本次学习重点内容&#xff1a;二、详细知识点介绍&#xff1a;1、高质量编程简介什么是高质量&#xff1f;编程原则&#xff1a;2、编码规范注释&#xff1a;代码格式&#xff1a;命名规范变量&#xff1a;函数&#xff1a;package&#xff1a;错误和异常处理&…