Python lambda表达式

Python lambda表达式

一.lambda基本概念


python中,lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,类似c语言的,可以用在任何需要函数的地方。用匿名函数有一个好处,因为函数没有名字,不必担心函数名冲突。匿名函数也是一个函数对象,也可以把**匿名函数赋值给一个变量,**在利用变量来调用该函数


实例:

f=lambda x:x*x
f(5)=25

同样,也可以把匿名函数作为返回值返回,比如:

def f(x,y):
    
    return lambda x*x+x*y

二.lambda与def区别

  1. def创建的方法是有名称的,而lambda没有
  2. lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)
  3. lambda只是一个表达式,而def是一个语句
  4. lambda表达式":"后面只能有一个表达式,def则可以有多个

**

三.例子说明


python中有一个定义好的全局函数方便调用:filter,map,functools.reduce

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> filter(lambda x: x % 3 == 0, foo)
<filter object at 0x0000025834193E08>
>>> list(filter(lambda x: x % 3 == 0, foo))
[18, 9, 24, 12, 27]
>>> list(map(lambda x:x%2+10,foo))
[10, 10, 11, 10, 11, 10, 10, 10, 11]
>>> functools.reduce(lambda x,y:x+y,foo)
139

定义某种排序规则
将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序

>>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
[5, 4, 6, 3, 7, 2, 8, 1, 9]
原文地址:https://www.cnblogs.com/LQ6H/p/12940519.html