分类
文章

Python Lambda-没有名称的匿名函数

本教程将向您介绍Python lambda运算符(又名匿名函数)。您将学习如何创建lambda函数,并将其与列表,字典,map()和filter()结合使用。

在Python中,您可以通过两种方法来创建函数

a)使用Def关键字:它创建一个函数对象并将其分配给一个名称。

b)使用lambda:它创建一个内联函数并作为结果返回。

Lambda函数是轻量级的匿名函数。它可以接受任意数量的参数,但只能有一个表达式。

让我们进一步了解Python lambda。

什么是Python中的lambda?

Lambda是一个未命名的函数。它提供了一个生成函数对象的表达式形式。

此表达式形式创建一个函数并返回其对象以供以后调用。

如何创建lambda函数?

Syntax-

它具有以下签名:


lambda arg1, arg2, ... argN: expression using arguments

lambda函数的主体类似于您在def主体的return语句中输入的内容。此处的区别在于结果是类型化表达式,而不是显式返回它。

请注意,lambda函数不能包含任何语句。它仅返回可以分配给任何变量的功能对象。

lambda语句可以出现在不允许使用def的地方。例如–在列表文字或函数调用的参数中,等等。

列表内的lambda:


alist = [lambda m:m**2, lambda m,n:m*n, lambda m:m**4]

print(alist[0](10), alist[1](2, 20), alist[2](3)) # Output: 100 40 81

字典中的lambda:


key = 'm'

aDict = {'m': lambda x:2*x, 'n': lambda x:3*x}

print(aDict[key](9)) # Output: 18

扩展Python Lambda函数

我们可以通过将lambda函数与filter和map函数一起使用来扩展其实用性。

可以通过将lambda表达式作为参数传递给另一个函数。我们将这些方法称为高阶函数,因为它们接受函数对象作为参数。

Python提供了两个内置函数,例如filter()和map(),它们可以接收lambda函数作为参数。

可迭代对象上的地图函数– map()

通过map()函数,我们可以对集合或可迭代对象进行调用。

我们还可以在map调用中将Python lambda函数指定为函数对象。

map()函数具有以下签名。


map(function_object, iterable1, iterable2,...)

它需要可变长度的参数:第一个是lambda函数对象,其余的是可迭代对象,例如列表,字典等。

map()函数做什么?

map函数迭代所有列表(或字典等),并为其每个元素调用lambda函数。

map()函数返回什么?

map()的输出是一个列表,其中包含lambda函数针对其调用的每个项目返回的结果。

下面是一个简单的示例,说明了使用map()函数将列表的元素转换为大写形式。


# Python lambda demo to use map() for adding elements of two lists

alist = ['learn', 'python', 'step', 'by', 'step']

output = list(map(lambda x: x.upper() , alist))

# Output: ['LEARN', 'PYTHON', 'STEP', 'BY', 'STEP']
print(output)

让我们举一个例子,说明如何使用map()函数添加两个列表的元素。


# Python lambda demo to use map() for adding elements of two lists

list1 = [1, 2, 3, 4]
list2 = [100, 200, 300, 400]

output = list(map(lambda x, y: x+y , list1, list2))

# Output: [101, 202, 303, 404]
print(output)
选择可迭代项– filter()

filter()函数根据测试函数选择可迭代项(列表,字典等)。

我们还可以通过使用Python lambda函数作为函数对象来过滤列表。

过滤器功能具有以下签名。


filter(function_object, list)

它需要两个参数:第一个是lambda函数对象,第二个是列表。

filter()函数有什么作用?

filter函数迭代列表,并为每个元素调用lambda函数。

filter()函数返回什么?

它返回一个最终列表,其中包含lambda函数求值为True的项目。

下面是一个简单示例,说明了使用filter()函数从字母列表中确定元音的过程。


# Python lambda demo to filter out vowles from a list

alphabets = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
vowels = ['a', 'e', 'i', 'o', 'u']

output = list(filter(lambda x: (x in vowels) , alphabets))

# Output: ['a', 'e', 'i']
print(output)
汇总可迭代项– reduce()

reduce方法将函数连续地应用到可迭代对象(例如列表)上,直到列表中没有剩余项为止。它产生不可迭代的结果,即返回单个值。

此方法有助于从列表中聚合数据并返回结果。它可以让我们对序列中连续的值对进行滚动计算。

我们还可以将Python lambda函数作为reduce方法的参数传递。

reduce()函数具有以下语法。


reduce(func_obj, iterable[, initializer])

下面是一个简单的示例,其中reduce()方法正在计算列表中元素的总和。


from functools import reduce

def fn(m, n) : return m + n

print(reduce((lambda m, n: m + n), [1, 2, 3, 4]))
print(reduce(fn, [1, 2, 3, 4]))

执行完上面的代码后,您将看到以下输出。


10
10

摘要– Python lambda

今天,我们讨论了Python Lambda。它是在Python中创建函数的多种方法之一。

希望你学得很好。请尝试在日常编程任务中使用它。

发表评论

电子邮件地址不会被公开。 必填项已用*标注