Python - Lambda函数

Python - Lambda函数 首页 / Python3入门教程 / Python - Lambda函数

Python Lambda函数被称为不带名称的匿名函数。 Python允许不以标准方式声明函数,即使用 def 关键字。而是使用 lambda 关键字声明匿名函数。但是,Lambda函数可以接受任意数量的参数,但是它们只能以表达式形式返回一个值。

下面给出了定义匿名函数的语法。

无涯教程网

lambda arguments: expression     

它可以接受任意数量的参数,并且只有一个表达式。当需要函数对象时,它很有用。

考虑下面的lambda函数示例。

# A是一个参数,A + 10是得到评估和返回的表达式。
x = lambda a:a+10 
# 在这里,我们正在打印函数对象
print(x)
print("sum = ",x(20))

输出:

<function <lambda> at 0x0000019E285D16A8>
sum =  30

在上面的示例中,定义了 lambda a:a + 10 匿名函数,其中 a 是一个参数, a + 10 是一个表达式。给定的表达式将被求值并返回结果。上面的lambda函数与普通函数相同。

def x(a):
	return a+10
print(sum = x(10))

Lambda函数的多个参数

# A和B是参数,A * B是评估和返回的表达式。
x = lambda a,b: a*b
print("mul = ", x(20,10))

输出:

mul =  200

为什么使用lambda函数?

在无涯教程在另一个函数内部匿名使用lambda函数的主要角色时,可以在方案中更好地描述它们。在Python中,lambda函数可用作高阶函数的参数,该函数接受其他函数作为参数。

#函数table(n)打印n的表
def table(n):  
    return lambda a:a*n # A将包含迭代变量I,并且在每个函数调用时返回n的倍数
n = int(input("Enter the number:"))  
b = table(n) #输入的数字将传递到函数表中。 B将包含一个Lambda函数,它再次又一次地调用迭代变量i  
for i in range(1,11):  
    print(n,"X",i,"=",b(i)) #使用迭代变量i调用lambda函数b

输出:

Enter the number:10
10 X 1 = 10 
10 X 2 = 20
10 X 3 = 30
10 X 4 = 40
10 X 5 = 50
10 X 6 = 60
10 X 7 = 70
10 X 8 = 80
10 X 9 = 90
10 X 10 = 100

lambda函数通常与Python内置函数 filter() map()函数一起使用。

与filter()一起使用

Python内置的 filter()函数接受一个函数和一个列表作为参数。它提供了一种有效的方法来过滤出序列中的所有元素。它返回新的序列,函数在该序列中求值为 True

考虑以下示例,其中从给定列表中过滤出唯一的奇数。

#用于过滤掉包含奇数的元组的程序 
lst = (10,22,37,41,100,123,29)
oddlist = tuple(filter(lambda x:(x%3 == 0),lst)) # 元组包含Lambda函数评估为True的所有元组项目
print(oddlist)  

输出:

(37, 41, 123, 29)

在map()中使用lambda函数

Python中的 map()函数接受一个函数和一个列表。它提供了一个新列表,其中包含该函数为每个项目返回的所有已修改项目。

考虑下面的 map()函数示例。

#程序过滤掉包含奇数的列表 
lst = (10,20,30,40,50,60)
square_list = list(map(lambda x:x**2,lst)) # 元组包含Lambda函数评估为true的列表的所有项目
print(square_tuple)  

输出:

(100, 400, 900, 1600, 2500, 3600)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

邱岳的产品实战 -〔邱岳〕

程序员的数学基础课 -〔黄申〕

人人都用得上的写作课 -〔涵柏〕

手把手教你玩音乐 -〔邓柯〕

爆款文案修炼手册 -〔乐剑峰〕

程序员的测试课 -〔郑晔〕

大数据经典论文解读 -〔徐文浩〕

结构学习力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)