深入浅出python的lambda表达式

简介: 今天我们来聊聊Python中一个常用的特性 - lambda表达式。别被这个听起来很高大上的名字吓到,其实它就是个匿名函数的实现机制。

今天我们来聊聊Python中一个常用的特性 - lambda表达式。别被这个听起来很高大上的名字吓到,其实它就是个匿名函数的实现机制。

一、什么是lambda表达式?为什么要用它?

想象一下,你有一个超级简单的任务,比如给一个数字加1。用普通的函数,你可能会这么写:

def add_one(x):
    return x + 1

但是,如果这个函数你在整个项目里只用一次,写这么多是不是有点浪费?这时候,lambda表达式就派上用场了。它让你可以快速创建一个小函数,而不需要正式地定义它。就像是函数界的即时速食,快捷方便!

二、lambda表达式长啥样?

lambda表达式的基本结构是这样的:

lambda 参数: 表达式

看起来很简单,对吧?但是别被这个简单的外表骗了,它里面大有学问。让我们一步步拆解:

lambda关键字:

这个词就像是给Python打的一个招呼,"嘿,我要定义一个匿名函数了!"。每次你想用lambda表达式,都得从这个词开始。

参数:

跟在lambda后面的是参数。可以没有参数,也可以有一个或多个参数。多个参数之间用逗号分隔。例如:

  • 无参数:lambda 表达式
  • 一个参数:lambda x 表达式
  • 多个参数:lambda x, y, z 表达式

冒号:

冒号是参数和表达式之间的分隔符。它就像在说:"参数介绍完了,接下来是正戏了!"

表达式:

这是lambda表达式的核心,也就是你想要这个函数执行的操作。重要的是,这里只能有一个表达式,不能是一串复杂的代码。表达式的结果就是这个lambda函数的返回值

来看几个具体的例子:

# 无参数,返回一个固定值
always_say_hello = lambda: "Hello!"
print(always_say_hello())  # 输出: Hello!
# 一个参数,返回其平方
square = lambda x: x ** 2
print(square(4))  # 输出: 16
# 两个参数,返回它们的和
add = lambda x, y: x + y
print(add(3, 5))  # 输出: 8
# 可以使用条件表达式
is_even = lambda x: "Even" if x % 2 == 0 else "Odd"
print(is_even(7))  # 输出: Odd
print(is_even(8))  # 输出: Even

对比一下普通函数,你会发现lambda表达式真的很简洁:

# 普通函数
def add(x, y):
    return x + y
# lambda表达式
add = lambda x, y: x + y

lambda表达式把函数定义、参数声明和return语句都浓缩在了一行里!

三、lambda表达式有什么特点?

  • 简洁:正如你看到的,lambda表达式超级简洁。
  • 一次性:它们通常用于那些你只需要使用一次的简单函数。
  • 函数式编程:lambda表达式是函数式编程的一个重要工具。别被这个词吓到,简单说就是用函数来解决问题的一种编程方式。

四、在哪里用lambda表达式?

lambda表达式最常见的用途是和Python的一些内置函数一起使用,比如map()、filter()和sorted()。


例如,假设你有一个列表of数字,想要得到每个数字的平方:

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

是不是很方便?一行代码就搞定了!

五、lambda vs 普通函数:怎么选?

并不是所有地方都适合用lambda表达式。如果你的函数逻辑很简单,而且只用一次,用lambda就很合适。但如果函数比较复杂,或者你需要多次使用,还是乖乖写个普通函数吧。

六、实战时间

让我们来看几个实际的例子,感受一下lambda表达式的魅力:

1. 排序:假设你有一个包含元组的列表,想按照元组的第二个元素排序

pairs = [(1, 'one'), (3, 'three'), (2, 'two'), (4, 'four')]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs)  # 输出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

2. 过滤:从一个列表中找出所有偶数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens)  # 输出: [2, 4, 6, 8, 10]

总之,lambda表达式简洁、灵活,用好了可以让你的代码更加优雅。当然,也不要滥用哦,适可而止才是王道。


希望这篇文章能帮你理解lambda表达式。下次遇到简单的一次性函数需求,不妨试试lambda!


作者:大鲸鱼crush

链接:https://juejin.cn/post/7394789388142329865

相关文章
|
1月前
|
缓存 前端开发 JavaScript
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
在我们快速发展的在线环境中,只需几秒钟加载的网站就能真正脱颖而出。您是否知道加载时间较快的网站的转化率比加载时间较长的网站高出三倍?
25 0
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
|
1月前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
31 1
|
1月前
|
Python
Python编程中正则表达式的使用
【10月更文挑战第22天】正则表达式,一种强大的文本处理工具,在Python编程中有着广泛的应用。本文将介绍如何使用Python中的re库来使用正则表达式,包括如何创建、匹配、查找和替换字符串等。通过学习本文,你将能够掌握Python中正则表达式的基本使用方法。
|
1月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
39 2
|
3月前
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
65 2
|
2月前
|
程序员 Python
Python中Lambda表达式的优缺点及使用场景
Python中Lambda表达式的优缺点及使用场景
46 0
|
2月前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
34 0
|
3月前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
103 1
|
4月前
|
Python
Python 中的 Lambda 函数是什么?
【8月更文挑战第29天】
51 0
|
4月前
|
运维 Java API
探索Java中的Lambda表达式自动化运维的魔法:如何利用Python脚本提升效率
【8月更文挑战第29天】Lambda表达式是Java 8中引入的一个新特性,它允许我们将功能作为方法参数,或者代码作为数据来处理。在这篇文章中,我们将深入探讨Java中的Lambda表达式,包括它的语法、使用场景以及如何在实际编程中应用它。我们将通过一些简单的示例来演示Lambda表达式的强大功能和灵活性,让你更好地理解和掌握这一新特性。