细说Python Lambda函数的用法,建议收藏!

华为云开发者社区
摘要:今天我就和大家聊聊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])

下图描述了上面的示例:
image.png

输出: 187

输出清楚地表明,列表的所有元素都被连续添加以返回最终结果。

点击关注,第一时间了解华为云新鲜技术~

阅读 761

开发者之家
华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态...

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态...

1.1k 声望
1.6k 粉丝
0 条评论
你知道吗?

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态...

1.1k 声望
1.6k 粉丝
宣传栏