Python 匿名函数lambda详解

时间:2024-03-08 19:34:09

一、匿名函数定义

     lambda 函数是一个匿名函数(即,没有名称定义),它可以接受任意数量的参数,但与普通函数不同,它只计算并返回一个表达式

二、匿名函数语法

lambda arguments(参数): expression(表达式)

 说明: arguments是函数的参数,expression是返回的值。

lambda 函数包括三个元素:

  • 关键字 lambda:与普通函数中 def 类似

  • 参数:支持传递位置和关键字参数,与普通函数一样

  • 正文:处理定参数的表达式

 

三、匿名函数特点

  • 匿名性:lambda函数没有名字。
  • 简洁性:lambda函数通常只有一行代码,非常适合编写简单的函数。
  • 即用即弃:lambda函数主要用于一次性操作,不需要重复使用。

四、匿名函数的使用

1、映射函数map()中,我们可以使用lambda函数来应用某个操作到序列的每个元素上。

ll = [1, 2, 3, 4, 5]
mm=map(lambda x: x **3, ll)  #每个元素的3次幂
print(list(mm))

 

2、过滤函数filter()中,我们可以使用lambda函数来过滤序列中满足某个条件的元素。

ll = [33, 3, 22, 2, 11, 150]
ff=filter(lambda x: x > 20, ll)  #过滤大于20的元素
print(list(ff))

 

3、排序:在Python中,我们可以使用lambda函数作为sorted()或list.sort()函数的key参数,以便根据自定义规则对列表进行排序。

ll = [28, 3, 22, 2, 36, 15,22,11]
print(ll)
ss=sorted(ll,key=lambda x:x%2)   #排序,偶数在前,奇数在后
print(ss)

 

五、 Lambda 函数的优缺点

优点

  • 可以在定义后立即调用

  • 可以作为参数传递给高阶函数,例如 filter()、map() 和 reduce()等

缺点

  • 不能执行多个表达式

  • 很容易变得麻烦,可读性差,例如当它包括一个 if-elif-...-else 循环

  • 不能包含任何变量赋值(例如,lambda x: x=0 将抛出一个语法错误)

  • 我们不能为 lambda 函数提供文档字符串

 六、总结

    lambda函数是Python中一种强大而简洁的工具,它允许我们以匿名的方式定义简单的函数。