带有示例的 Python Lambda 函数

已发表: 2022-06-04

目录

Python——简介

Python 是一种非常流行的通用编程语言。 它是一种解释型高级语言,通过使用重要的缩进来强调代码的可读性。 程序员使用 Python 为任何规模的项目编写干净、符合逻辑的代码。

Python 在 1980 年代被 Guido Van Rossum 构想为 ABC 编程语言的继承者。 从那时起,由于其多功能性,Python 一直是一种流行的编程语言。

函数——简介

函数是调用时工作的代码块,可以在程序中调用 n 次。 它们是结构化的代码语句并执行特定的功能,并且可以随时使用。 功能基本上分为:

  • 用户定义函数 (USF) — 可根据程序员的要求更改的可自定义函数。
  • 内置函数 (BIF) — 无法自定义且必须以可用方式使用的函数。

在 upGrad 在线学习数据科学课程

Python Lambda 函数

Python Lambda 函数本质上是匿名的,因为它们没有明确的名称。 def函数用于表示 Python 中的普通函数 同时,关键字Lambda用于定义匿名 Python 函数。

Lambda 函数是一个小函数,可以接受多个参数,但只能接受一个表达式。 它们还具有比常规 Python 函数更严格但更简洁的语法。 lambda 函数于 1994 年与map ()、 filter () 和reduce () 函数一起添加到 Python 语言中。

检查我们的美国 - 数据科学计划

数据科学和商业分析专业证书课程 数据科学理学硕士 数据科学理学硕士 数据科学高级证书课程
数据科学执行 PG 计划 Python 编程训练营 商业决策数据科学专业证书课程 数据科学高级课程

要定义匿名函数,必须使用 lambda 关键字,例如def用于普通函数。 Python中定义的匿名函数分为三个部分:

  • 关键字 lambda
  • 参数或绑定变量
  • 函数体

句法

lambda 函数的语法如下:

Lambda p1, p2:表达式

p1 和 p2 是这里的参数。 在 lambda 函数中添加参数没有限制。 您可以根据需要添加尽可能多或尽可能少的内容。 但是 lambda 函数在语法上仅限于一个表达式。

Python中的lambda函数示例:

示例 1

x =“Lambda 函数”

# lambda 得到传递以打印

(λ x : 打印(x))(x)

输出

Lambda 函数

示例 2

x = λ a : a + 10

打印(x(5))

输出

15

我们的学习者还阅读了:免费在线学习 Python

普通函数和 lambda 函数的区别

lambda 函数与普通函数相比有一些语法差异。

  • 正文中只使用表达式而不是语句。 如果使用任何语句,如 pass、assert、return 或 raise,输出将显示 SyntaxError。

例子

>>> (lambda x: 断言 x == 2)(2)

文件“<input>”,第 1 行

(lambda x: 断言 x == 2)(2)

^

SyntaxError:无效的语法

  • lambda 函数只能作为单个表达式存在。 即使表达式使用多个字符串分布在整个正文中,它也只能保留为单个表达式。

示例

>>> (λx:

…(x % 2 和“奇数”或“偶数”))(3)

'奇怪的'

当 lambda 参数为奇数时,代码将返回字符串奇数,如果不是,则返回偶数。 代码跨越两行,因为它位于括号内,但仍保留为单个表达式。

  • lambda 函数不支持类型注释。 向 lambda 语法添加注释将导致语法错误。
  • IIFE 或立即调用函数表达式是在定义后立即执行的函数。 它也被称为自执行匿名函数。 IIFE 是 lambda 函数的直接结果,因为 lambda 函数在定义时是可调用的。

现在,让我们看看普通函数和 lambda 函数之间的主要区别是:

(资源)

Lambda 函数 – 优点和缺点

优点

  • 它使代码更具可读性。
  • 非常适合一次性使用的功能。
  • 易于理解,可用于简单的逻辑解释。

缺点:

  • 不能执行多个独立表达式。
  • 如果代码在正常 (def) 函数中跨越多于一行,则使用 lambda 函数并不理想。
  • 所有的输入、输出和操作都不能像普通函数一样在文档字符串中解释。

在哪里使用 Lambda?

尽管普通的 def 函数和 lambda 函数有关键区别,但在内部,它们是在内部处理的。

  • Python 中 lambda 函数的常见用途是用于函数式编程。 您可以在函数式编程中使用 lambda 将函数作为参数提供给不同的函数。
  • 如果您需要减少指定函数的行数,lambdas 是您的最佳选择。
  • Lambda 还与 map()、reduce() 等高阶函数一起使用。
  • 可以使用 lambda 函数跟踪对 UI 框架事件的响应。

在哪里避免使用 lambda 函数?

  • 编写复杂的 lambda 函数不是一个好习惯,因为它很难解密。
  • 避免使用 lambda 函数进行重复操作。
  • 如果代码不遵循 Python 样式指南 (PEP8)。

Lambda 函数的测试与常规函数完全一样。 unittest 和 doctest 都可以用于此。

阅读我们的热门美国 - 数据科学文章

具有认证的数据分析课程 带有认证的 JavaScript 免费在线课程 被问到最多的 Python 面试问题和答案
数据分析师面试问题和答案 美国顶级数据科学职业选择 [2022] SQL 与 MySQL – 有什么区别
数据类型的终极指南 美国 Python 开发者薪资 美国数据分析师薪资:平均薪资

带有 filter() 的 Lambda 函数

Filter() 是一个内置的 Python 函数和列表作为参数。 当所有可迭代项都在一个列表中时使用过滤器(),并返回另一个列表,其中包含函数为真的项目。

示例

# Python代码来说明

# filter() 和 lambda()

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]

final_list = list(filter(lambda x: (x%2 != 0) , li))

打印(最终列表)

输出:

[5, 7, 97, 77, 23, 73, 61]

(资源)

示例

# 程序只过滤掉列表中的偶数项

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(filter(lambda x: (x%2 == 0) , my_list))

打印(新列表)

输出

[4、6、8、12]

带有 map() 的 Lambda 函数

当所有项目都在列表中时使用 map 函数,并返回列表以及该函数为每个项目返回的项目。

示例:要将列表中每个项目的值加倍,代码如下:

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(map(lambda x: x * 2 , my_list))

打印(新列表)

输出:

[2、10、8、12、16、22、6、24]

示例:对列表中的每个数字进行立方,代码如下

list_1 = [1,2,3,4,5,6,7,8,9]

立方=地图(lambda x:pow(x,3),list_1)

列表(立方)

输出:

[1、8、27、64、125、216、343、512、729]

带有 reduce() 函数的 Lambda 函数

Python 中的 reduce() 函数是一个列表和一个参数。 调用它以返回一个可迭代的新简化列表。 它有点类似于加法功能。

示例 1

注意:此示例来自 functools 库。

要获得列表的总和,代码将是,

# Python代码来说明

# reduce() 与 lambda()

# 获取列表的总和

从 functools 导入减少

li = [5, 8, 10, 20, 50, 100]

sum = reduce((lambda x, y: x + y), li)

打印(总和)

输出:

193

结论

长期以来,在 Python 中使用 lambda 函数一直是程序员之间有争议的话题。 虽然 lambda 确实可以用内置函数、列表推导和标准库替换,但对 lambda 函数的理解也是必要的。 它可以帮助您了解编程的基本原理并编写更好的代码。

即使您不亲自使用 lambda 函数,也可能会在其他人的程序中遇到这些情况。 因此,无论如何,建议您具备 lambda 函数的基本知识。

如果您想学习成熟的 Python 并提升您在数据科学和商业分析方面的职业生涯,upGrad 的美国顶尖大学马里兰大学在线数据科学和商业分析专业证书课程是您的最佳选择。

该计划提供了在全球前 100 所大学之一学习的机会,并获得马里兰史密斯的证书,以增加您在该领域取得成功的机会。 这是一个为期 9 个月的课程,可以访问 300 多个招聘合作伙伴,保证为应届生提供面试机会,以及 6 次辅导电话。

Python 中的装饰器是什么?

Python 中接受一个函数的参数并返回另一个函数的函数称为装饰器。 它用装饰器语法表示。 装饰器可以应用于 lambda 函数,但不能使用装饰器语法。 它通常用于调试目的。 或者,可以将 lambda 函数用作装饰器,但不建议这样做。

Python Lambda 函数中的参数是什么?

像普通 def 函数一样的 Lambda 函数支持不同的参数传递方式。 其中包括: 仅关键字参数 关键字参数/命名参数 Varargs/ 参数变量列表 关键字参数变量列表。

Python Lambda 函数中的闭包是什么?

闭包或词法闭包是函数,其中除参数之外的每个自由变量都绑定到函数封闭范围内的特定值。 可以从任何地方调用闭包。 像普通 def 函数这样的 Lambda 函数可以是闭包。