Python Lambda–匿名函数教程及示例

Lambda函数是一种特殊类型的函数,不表示为正则函数。Lambda函数没有任何可调用的函数名,它们是为单行简单函数创建的。lambda函数将消除 def 函数定义的关键字。Lambda函数也称为小型匿名函数,其中它没有任何函数名。在本教程的下一部分中,我们将看到lambda函数可以采用不同类型的参数。

null

Lambda函数的使用特性和用例

  • 作为一个单行函数定义,它只包含表达式,不包含任何语句。
  • 它被写为一行执行。
  • Lambda函数由于其简单性和原子性而易于阅读。
  • Lambda函数不支持类型注释。
  • 通过在同一行中添加参数,可以在定义之后立即调用Lambda函数。

Lambda语法

Lambda函数定义的语法与其他Python关键字和结构非常不同。

VAR = lambda ARG1, ARG2, ... : EXPRESSION
  • VAR 将在其中分配lambda函数的变量名。
  • lambda 用于定义和创建lambda函数的关键字。
  • ARG1 , ARG2 ,…是lambda函数的参数。我们可以使用一个参数或多个参数。因为它们是可选的,所以我们也可以提供零参数。
  • EXPRESSION 列出每次调用lambda函数时将执行的lambda函数体

Lambda示例

我们将从一个简单的例子开始,在这个例子中,我们将为lambda函数提供一个参数。我们将提供参数名称 a lambda函数将分配给 x .

x = lambda a: "This is the "+a

print(x("poftut.com"))

x = lambda a: a*a*a

print(x(3))

print(x(4))
Lambda Example
Lambda示例

  • 在第一个示例中,我们将向lambda函数提供“poftut.com”,该函数将返回字符串“This is the poftut.com”。
  • 在第二个例子中,我们为lambda函数提供了3,它与自身相乘3次。
  • 在第二个例子中,我们为lambda函数提供了4,它与自身相乘3次。

相关文章: Python reduce()函数教程及示例

Lambda无  论元

我们可以使用lambda函数而不提供任何参数。我们将把表达式部分放到lambda函数中,并使用新创建的lambda函数。在本例中,我们将创建lambda函数并将其分配给 x 函数将打印“This is the X”  到屏幕上。

x = lambda : "This is the X"

print(x())
Lambda without  Argument
Lambda无  论元

直接调用Lambda函数

Lambda函数也可以直接调用,而无需将其赋给变量。我们将在lambda函数定义之后提供参数。我们还将围绕lambda函数并用括号提供参数。在下面的例子中,我们将计算并打印“This site is poftut.com”。

(lambda x: x + 1)(2)

(lambda x: x * x + 1)(3)

(lambda x: "This site is "+x)("poftut.com")
Call Lambda Function Directly
直接调用Lambda函数

多参数Lambda

Lambda函数可以在没有参数的情况下使用,也可以使用单个参数或多个参数。我们可以在一行中提供多个参数,这也称为位置参数。在本例中,我们将提供参数a作为1,b作为2,c作为5,如下所示。

x = lambda a, b, c: a + b + c

print(x(1, 2, 5))
Lambda with Multiple Arguments
多参数Lambda

带命名参数的Lambda

我们可以在lambda函数中使用命名参数。我们将设置 c 默认值为5。如果没有向lambda函数调用提供c,则将假定为5。如果提供了,则将使用提供的新值。

x = lambda a, b, c=5 : a + b + c

print(x(1, 2))

print(x(10, 20))

print(x(1, 2, 10))
Lambda with Named Arguments
带命名参数的Lambda

参数列表可变的Lambda

如果提供的参数列表和计数是变量,则必须使用 args 可以映射可变长度参数的关键字。我们将使用 *args 作为可变长度参数,并在表达式中使用它们。

x = lambda *args : sum(args)

 x(1,2,3)

x(1)

 x(1,2)

x(1,2,3,4)

x(1,2,3,4,5)

 x(1,2,3,4,5,6)

x(1,2,3,4,5,6,7)

x(1,2,3,4,5,6,7,8)

x(1,2,3,4,5,6,7,8,9)
Lambda with Variable List Of Arguments
参数列表可变的Lambda

具有关键字参数变量列表的Lambda

我们还可以在Lambda函数中使用关键字的可变列表。我们将使用 kwargs 关键字并用 values() 功能。我们将提供不同名称的参数。

x = lambda **kwargs : sum(kwargs.values())

x(a=1 , b=2 )

x(a=1 , b=2 , c=3 )

x(a=1 , b=2 , c=3 , d=4 )

x(a=1 , b=2 , c=3 , d=4 , e=5 )

x(a=1 , b=2 , c=3 , d=4 , e=5 , f=6 )
Lambda with Variable List Of Keyword Arguments
具有关键字参数变量列表的Lambda

Lambda与Python交互Shell

Lambda提供了Python交互式shell的特殊用法。我们可以创建一个没有变量赋值的lambda函数,然后用下划线调用它 _ 接线员。但是定义之后我们只能调用lambda函数一次。如果在定义之后第二次尝试调用lambda函数,我们将得到一个异常。

>>> lambda x: "This site is "+x
>>> _("POFTUT.com")
>>> lambda x: x * x + 1
>>> _(3)
>>> _(4)
>>> lambda x: x * x + 1
>>> _(4)
Lambda with Python Interactive Shell
Lambda与Python交互Shell

Lambda with filter()函数

filter() 函数用于根据函数中定义的情况过滤变量序列。Lambda函数对于创建用于过滤的情况非常有用。使用lambda函数还将使过滤器更具可读性。

mynumbers = [ 2 , 4 , 5 , 34 , 245 , 56 , 4 , 7 , 8 , 0 , 45 ]

filtered_numbers = list(filter(lambda x: (x%2 !=0), mynumbers))

print(filtered_numbers)
Lambda with filter() Function
Lambda with filter()函数

Lambda with map()函数

map() 函数用于在给定的列表元素上逐个运行给定的函数。Lambda函数另一个流行的用例是使用map()函数将它与给定的列表元素一起使用。在本例中,我们将使用lambda函数来逐个计算给定列表元素的平方。

mynumbers = [ 2 , 4 , 5 , 34 , 245 , 56 , 4 , 7 , 8 , 0 , 45 ]

filtered_numbers = list(map(lambda x: x * x , mynumbers))

print(filtered_numbers)
Lambda with map() Function
Lambda with map()函数

带reduce()函数的Lambda

reduce() 是另一个有趣的函数,从给定的列表中,给定的函数可以处理多个元素。作为一个函数,lambda可以非常有效地用于简单的操作。在本例中,我们将在每个步骤中对2个相邻元素求和或减少。

mynumbers = [ 2 , 4 , 5 , 34 , 245 , 56 , 4 , 7 , 8 , 0 , 45 ]

filtered_numbers = reduce(lambda x, y: x+y , mynumbers)

print(filtered_numbers)
Lambda with reduce() Function
带reduce()函数的Lambda

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享