如何在 Python 中使用 Lambda 函数

聖光之護
发布: 2024-10-31 21:30:23
转载
773人浏览过

如何在 python 中使用 lambda 函数

python 中的 lambda 函数是动态创建小型匿名函数的强大方法。这些函数通常用于简短的操作,其中不需要完整函数定义的开销。

传统函数是使用 def 关键字定义的,而 lambda 函数是使用 lambda 关键字定义的,并且直接集成到代码行中。特别是,它们经常用作内置函数的参数。它们使开发人员无需临时函数定义即可编写干净且可读的代码。

在本文中,我们将介绍 lambda 函数的用途及其语法。我们还将提供一些使用它们的示例和最佳实践,并讨论它们的优缺点。

先决条件

自 2.0 版本以来,lambda 函数已成为 python 的一部分,因此您需要:

立即学习Python免费学习笔记(深入)”;

  • 最低 python 版本:2.0.
  • 推荐python版本:3.10或更高版本。

在本教程中,我们将了解如何将 lambda 函数与 pandas 库结合使用:一个快速、强大、灵活且易于使用的开源数据分析和操作库。如果您尚未安装,请运行以下命令:

pip install pandas
登录后复制

python lambda 函数的语法和基础知识

首先,让我们定义开发人员创建 lambda 函数必须使用的语法。

lambda 函数是使用 lambda 关键字定义的,后跟一个或多个参数和一个表达式:

lambda arguments: expression
登录后复制

假设我们要创建一个将两个数字相加的 lambda 函数:

add = lambda x, y: x + y
登录后复制

运行以下命令:

result = add(3, 5)
print(result)
登录后复制

这会导致:

8
登录后复制

我们创建了一个带有两个参数 x 和 y 的匿名函数。与传统函数不同,lambda 函数没有名称:这就是为什么我们说它们是“匿名的”。

此外,我们不使用 return 语句,就像在常规 python 函数中那样。所以我们可以随意使用 lambda 函数:它可以被打印(就像我们在本例中所做的那样)、存储在变量中等等。

现在让我们看看 lambda 函数的一些常见用例。

lambda 函数的常见用例

lambda 函数特别适用于我们需要临时简单函数的情况。特别是,它们通常用作高阶函数的参数。

让我们看一些实际例子。

将 lambda 函数与 map() 函数结合使用

map() 是一个内置函数,它将给定的函数应用于可迭代的每个项目,并返回带有结果的地图对象。

例如,假设我们要计算列表中每个数字的平方根。我们可以使用 lambda 函数,如下所示:

# define the list of numbers
numbers = [1, 2, 3, 4]

# calculate square values and print results
squared = list(map(lambda x: x ** 2, numbers))
print(squared)
登录后复制

这会导致:

[1, 4, 9, 16]
登录后复制

我们现在有一个包含初始数字的平方根的列表。

正如我们所看到的,这极大地简化了即时使用不需要稍后重用的函数的流程。

将 lambda 函数与 filter() 函数结合使用

现在,假设我们有一个数字列表并想要过滤偶数。

我们可以使用 lambda 函数,如下所示:

# create a list of numbers
numbers = [1, 2, 3, 4]

# filter for even numbers and print results
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)
登录后复制

这会导致:

[2,4]
登录后复制

将 lambda 函数与 sorted() 函数结合使用

python中的sorted()函数从任何可迭代的元素中返回一个新的排序列表。使用 lambda 函数,我们可以对这些列表应用特定的过滤条件。

如知AI笔记
如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27
查看详情 如知AI笔记

例如,假设我们有一个二维点列表:(x,y)。我们想要创建一个以增量方式对 y 值进行排序的列表。

我们可以这样做:

# creates a list of points
points = [(1, 2), (3, 1), (5, -1)]

# sort the points and print
points_sorted = sorted(points, key=lambda point: point[1])
print(points_sorted)
登录后复制

我们得到:

[(5, -1), (3, 1), (1, 2)]
登录后复制

在列表推导式中使用 lambda 函数

鉴于其简洁性,lambda 函数可以嵌入到列表推导式中以进行即时计算。

假设我们有一个数字列表。我们想要:

  • 迭代整个列表
  • 计算并打印双倍的初始值。

我们可以这样做:

# create a list of numbers
numbers = [1, 2, 3, 4]

# calculate and print the double of each one
squared = [(lambda x: x ** 2)(x) for x in numbers]
print(squared)
登录后复制

我们得到:

[1, 4, 9, 16]
登录后复制

使用 lambda 函数的优点

鉴于我们已经探讨过的示例,让我们来看看使用 lambda 函数的一些优点:

  • 逻辑简单的简洁性和可读性:lambda 函数允许简洁的代码,减少对标准函数定义的需求。这提高了函数逻辑简单的情况下的可读性。
  • 增强的函数式编程能力:lambda 函数与函数式编程原则很好地结合在一起,支持在 python 代码中进行函数式构造。特别是,它们促进了高阶函数的使用以及函数作为第一类对象的应用。
  • 何时以及为何更喜欢 lambda 函数:在定义不需要在代码中的其他地方重用的短的“一次性”函数时,lambda 函数特别有利。因此它们非常适合内联使用,例如高阶函数的参数。

局限性和缺点

让我们简单讨论一下 python 中 lambda 函数的一些限制和缺点:

  • 复杂表达式中的可读性挑战:虽然 lambda 函数很简洁,但当用于复杂表达式时,它们可能会变得难以阅读和理解。这可能会导致代码更难维护和调试。
  • 错误处理和调试的限制:由于 lambda 函数只能包含单个表达式,因此它们不能包含语句,例如用于错误处理的 try- except 块。这种限制使得它们不适合需要这些功能的复杂操作。
  • 受限功能:由于 lambda 函数只能包含单个表达式,因此它们的通用性不如标准函数。这种设计限制将它们的使用限制为简单的操作和转换。

使用 lambda 函数的最佳实践

现在我们已经考虑了一些优点和缺点,让我们定义一些有效使用 lambda 函数的最佳实践:

  • 保持简单:为了保持可读性和简单性,lambda 函数应保持简短并仅限于简单的操作。逻辑复杂的函数应该重构为标准函数。
  • 避免过度使用:虽然 lambda 函数在许多情况下都很方便,但过度使用它们可能会导致代码难以阅读和维护。明智地使用它们,并在清晰度至关重要时选择标准函数。
  • 将 lambda 函数与其他 python 功能结合:正如我们所见,lambda 函数可以有效地与其他 python 功能结合,例如列表推导式和高阶函数。如果使用得当,这可以产生更具表现力和简洁的代码。

lambda 函数的高级技术

在某些情况下,更高级的 lambda 函数技术可能会有所帮助。

让我们看一些例子。

嵌套 lambda 函数

lambda 函数可以嵌套以进行复杂的操作。

此技术在需要按顺序进行多个小型转换的场景中非常有用。

例如,假设您要创建一个函数来计算数字的平方根,然后加 1。以下是如何使用 lambda 函数来执行此操作:

# create a nested lambda function
nested_lambda = lambda x: (lambda y: y ** 2)(x) + 1

# print the result for the value 3
print(nested_lambda(3))
登录后复制

你得到:

10
登录后复制

与 python 库集成以实现高级功能

许多 python 库利用 lambda 函数来简化复杂的数据处理任务。

例如,lambda 函数可以与 pandas 和 numpy 一起使用,以简化数据操作和转换。

假设我们有一个包含两列的数据框。我们想要创建另一列,作为其他两列的总和。在这种情况下,我们可以使用 lambda 函数,如下所示:

# create the columns' data
data = {'a': [1, 2, 3], 'b': [4, 5, 6]}

# create data frame
df = pd.dataframe(data)

# create row c as a+b and print the dataframe
df['c'] = df.apply(lambda row: row['a'] + row['b'], axis=1)
print(df)
登录后复制

我们得到:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9
登录后复制

我们的 python lambda 函数之旅就到此为止!

总结

在本文中,我们了解了如何在 python 中使用 lambda 函数,探讨了它们的优缺点、一些最佳实践,并涉及了一些高级用例。

编码愉快!

p.s.如果您想在 python 文章发布后立即阅读,请订阅我们的 python wizardry 时事通讯,不错过任何一篇文章!

以上就是如何在 Python 中使用 Lambda 函数的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:dev.to网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号