📅  最后修改于: 2020-07-15 08:53:31             🧑  作者: Mango
在Python中,匿名函数意味着函数没有名称。我们已经知道def关键字用于定义普通函数,而lambda关键字用于创建匿名函数。它具有以下语法:
lambda arguments: expression
让我们看一下这个示例,尝试理解普通def定义的函数和lambda函数之间的区别。这是一个返回给定值的多维数据集的程序:
# Python代码来说明显示def()和lambda()之间差异的数字立方体.
def cube(y):
return y*y*y;
g = lambda x: x*x*x
print(g(7))
print(cube(5))
输出:
343
125
Lambda函数可以与filter(),map()和reduce()之类的内置函数一起使用。
将lambda()与filter()结合使用
Python中的filter()函数接受一个函数和一个列表作为参数。这提供了一种精巧的方法来过滤出序列“序列”的所有元素,为此函数返回True。这是一个小程序,可从输入列表中返回奇数:
# Python代码使用lambda()说明filter()
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代码使用lambda()说明map()以获取列表的两倍.
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代码用lambda()来说明reduce()以获取列表的总和
from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x, y: x + y), li)
print (sum)
输出:
193