关于python:细说Python-Lambda函数的用法建议收藏

5次阅读

共计 3071 个字符,预计需要花费 8 分钟才能阅读完成。

摘要:明天我就和大家聊聊 lambda 函数,在 Python 编程中,大家习惯将其称为表达式。

本文分享自华为云社区《从零开始学 python | 什么是 Lambda 函数以及如何应用它们?》,原文作者:Yuchuan。

名称是用于援用或寻址任何实体的约定。咱们四周的简直所有事物都有名字。编程畛域也与此统一。但这是必须命名的吗?还是您能够领有“匿名”商品?答案是必定的。Python 提供了 Lambda 函数,也称为匿名函数,实际上是无名的。因而,让咱们按以下程序持续学习 Python 的这些“匿名之谜”。

  • Why are Python Lambda Functions required?
  • What are Python Lambda Functions?
  • How to write Lambda Functions?
  • How do Anonymous functions reduce the size of the code?
  • Python Lambda functions within user defined functions
  • How to use Anonymous functions within:
    filter()
    map()
    reduce()

因而,让咱们开始:)

为什么要应用 Python Lambda 函数?

当您只须要一次应用某些性能时,匿名性能的次要目标就会显现出来。能够在任何须要的中央创立它们。因为这个起因,Python Lambda 函数也称为抛出函数,与其余预约义函数(例如 filter(),map()等)一起应用。与一般的 python 函数。

为了证实这一点,让咱们持续学习 Python Lambda 函数。

什么是 Python Lambda 函数?

Python Lambda 函数是没有任何名称的函数。它们也称为匿名或无名性能。“lambda”一词不是名称,而是关键字。此关键字指定前面的函数是匿名的。

当初您曾经晓得这些匿名函数指的是什么,让咱们进一步理解一下如何编写这些 Python Lambda 函数。

如何用 Python 编写 Lambda 函数?

应用 lambda 运算符创立 Lambda 函数,其语法如下:

句法:

lambda 参数:表达式

Python lambda 函数 能够具备任意数量的参数,但只须要一个 表达式。输出或自变量能够从 0 开始,并能够达到任何限度。就像任何其余函数一样,具备不带输出的 lambda 函数也很好。因而,您能够应用以下任何格局的 lambda 函数:

例子:

lambda:“指定目标”

在这里,lambda 函数不承受任何参数。

例子:

拉姆达一个 1:“指定应用的 1“

在这里,lambda 承受一个输出,即 1。

同样,您能够具备 lambda a 1,a 2,a 3 ..a n。

让咱们举几个例子来证实这一点:

范例 1:

a = lambda x: x*x
print(a(3))

输入: 9

范例 2:

a = lambda x,y: x*y
print(a(3,7))

输入: 21

如您所见,我在这里举了两个例子。第一个示例仅应用带有一个表达式的 lambda 函数,而第二个示例具备传递给它的两个参数。请留神,两个函数都有一个表达式,后跟参数。因而,在须要多行表达式的中央不能应用 lambda 函数。

另一方面,一般的 python 函数能够在其函数定义中应用任意数量的语句。

匿名函数如何缩小代码的大小?

在比拟所需的代码量之前,让咱们首先写下惯例函数的语法,而后将其与后面所述的 lambda 函数的语法进行比拟。

Python 中的任何惯例函数都是应用 def 关键字定义的,如下所示:

句法:

def function_name(parameters):

语句

如您所见,lambda 函数所需的代码量比一般函数少得多。

让咱们用当初的一般函数重写后面的示例。

例子:

def my_func(x):
    return x*x
print(my_func(3))

输入: 9

如您所见,在下面的示例中,咱们须要在 my_func 中应用 return 语句来计算 3 的平方值。相同,lambda 函数不应用此 return 语句,而是应用匿名函数的主体在冒号后跟函数自身写在同一行。因而,函数的大小小于 my_func 的大小。

然而,上述示例中的 lambda 函数是应用其余一些变量 a 调用的。这样做是因为这些函数是无名的,因而须要调用某些名称。然而,当您须要理论调配其余名称来调用它们时,为什么要应用这样的无名函数,这一事实仿佛令人困惑?当然,在为我的函数调配名称 a 之后,它不再不再是无名的了!正确的?

这是一个正当的问题,但重点是,这不是应用这些匿名函数的正确办法。

匿名函数最好在其余将函数用作参数或返回函数作为输入的其余 高阶函数 中应用。为了证实这一点,让咱们当初持续进行下一个主题。

用户定义函数中的 Python Lambda 函数:

如上文所述,lambda 函数可在其余函数中应用,以标记出最大的劣势。

以下示例由 new_func 组成,这是一个带有一个参数 x 的惯例 python 函数。而后将此参数增加到通过 lambda 函数提供的未知参数 y 中。

例子:

def new_func(x):
    return(lambda y: x+y)
t=new_func(3)
u=new_func(2)
print(t(3))
print(u(3))

输入:

6
5

如您所见,在下面的示例中,每当咱们应用 new_func()时,都会调用 new_func 中存在的 lambda 函数。每次,咱们都能够将独自的值传递给参数。

既然您曾经理解了如何在高阶函数中应用匿名函数,那么让咱们持续理解它的最风行用法之一是在 filter(),map()和 reduce()办法中。

如何在 filter(),map()和 reduce()中应用匿名函数:

filter()中的匿名函数:

筛选():

filter()办法用于在另一个作为参数传递的函数的帮忙下,过滤给定的 iterables(列表,汇合等),以测试所有元素为真还是假。

该函数的语法为:

句法:

过滤器(函数,可迭代)

当初思考以下示例:

例子:

my_list = [2,3,4,5,6,7,8]
new_list = list(filter(lambda a: (a/3 == 2), my_list))
print(new_list)

输入: [6]

在这里,my_list 是可迭代值的列表,该值传递给过滤器函数。此函数应用 lambda 函数查看列表中是否有任何值(除以 3 后等于 2)。输入由满足匿名函数中存在的表达式的列表组成。

地图():

Python 中的 map()函数是将给定函数利用于所有可迭代对象并返回新列表的函数。

句法:

地图(函数,可迭代)

让咱们以一个示例来演示 lambda 函数在 map()函数中的用法:

例子:

my_list = [2,3,4,5,6,7,8]
new_list = list(map(lambda a: (a/3 != 2), li))
print(new_list)

粗体
输入:

[True,True,True,True,False,True,True]
下面的输入显示,只有可迭代变量的值除以 3,就不等于 2,则返回的后果应为 True。因而,对于 my_list 中的所有元素,当条件更改为 False 时,它将返回 true(除了值 6 之外)。

缩小():

reduce()函数用于将某些其余函数利用于作为参数传递给它的元素列表,并最终返回单个值。

该函数的语法如下:

句法:

缩小(性能,程序)

例子:

from functools import reduce
reduce(lambda a,b: a+b, [23,21,45,98])

下图形容了下面的示例:

输入: 187

输入分明地表明,列表的所有元素都被间断增加以返回最终后果。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0