个性化阅读
专注于IT技术分析

Python lambda(匿名函数)|filter、map和reduce

在Python中, 匿名函数意味着函数没有名称。我们已经知道定义关键字用于定义常规功能, 拉姆达关键字用于创建匿名函数。它具有以下语法:

lambda arguments: expression
  • 此函数可以有任意数量的参数, 但只能有一个表达式, 该表达式将被求值并返回。
  • 可以在需要函数对象的任何地方免费使用lambda函数。
  • 你需要知道, lambda函数在语法上仅限于单个表达式。
  • 除了函数中的其他类型的表达式外, 它在编程的特定领域还具有多种用途。

让我们看一下这个例子, 并尝试了解普通def定义的函数和lambda函数之间的区别。这是一个返回给定值的多维数据集的程序:

# Python code to illustrate cube of a number 
# showing difference between def() and lambda().
def cube(y):
     return y * y * y;
  
g = lambda x: x * x * x
print (g( 7 ))
  
print (cube( 5 ))

输出如下:

343
125
  • 不使用Lambda:在这里, 它们都返回给定数字的多维数据集。但是, 在使用def时, 我们需要使用名称多维数据集定义一个函数, 并且需要向其传递值。执行后, 我们还需要使用调用函数的地方返回结果返回关键词。
  • 使用Lambda:Lambda定义不包含” return”语句, 它始终包含要返回的表达式。我们还可以将lambda定义放在需要函数的任何位置, 而不必完全将其分配给变量。这就是lambda函数的简单性。

Lambda函数可以与filter(), map()和reduce()之类的内置函数一起使用。

将lambda()与filter()结合使用

Python中的filter()函数接受一个函数和一个列表作为参数。这提供了一种精妙的方法来过滤出序列”序列”的所有元素, 为此函数返回True。这是一个小程序, 可从输入列表中返回奇数:

# Python code to illustrate
# filter() with lambda()
li = [ 5 , 7 , 22 , 97 , 54 , 62 , 77 , 23 , 73 , 61 ]
final_list = list ( filter ( lambda x: (x % 2 ! = 0 ) , li))
print (final_list)

输出如下:

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

将lambda()与map()结合使用

Python中的map()函数接受一个函数和一个列表作为参数。该函数使用lambda函数调用, 并有一个列表, 并返回一个新列表, 其中包含该函数为每个项目返回的所有lambda修改后的项目。例:

# Python code to illustrate 
# map() with lambda() 
# to get double of a list.
li = [ 5 , 7 , 22 , 97 , 54 , 62 , 77 , 23 , 73 , 61 ]
final_list = list ( map ( lambda x: x * 2 , li))
print (final_list)

输出如下:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

使用lambda()和reduce()

Python中的reduce()函数接受一个函数和一个列表作为参数。该函数使用lambda函数和一个列表进行调用, 并返回一个新的简化结果。这会对列表对执行重复操作。这是functools模块的一部分。例:

# Python code to illustrate 
# reduce() with lambda()
# to get sum of a list
from functools import reduce
li = [ 5 , 8 , 10 , 20 , 50 , 100 ]
sum = reduce (( lambda x, y: x + y), li)
print ( sum )

输出如下:

193

在这里, 前两个元素的结果将添加到下一个元素, 并一直持续到列表的末尾, 例如(((((5 + 8)+10)+20)+50)+100)。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

赞(0)
未经允许不得转载:srcmini » Python lambda(匿名函数)|filter、map和reduce

评论 抢沙发

评论前必须登录!