python之lambda

来源:互联网 发布:中国超级计算机知乎 编辑:程序博客网 时间:2024/05/16 12:56

1、lambda是什么?为什么要使用lambda?

lambda全称   “Lambda 表达式”(lambda expression)是一个匿名函数。

Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数

举个例子:

g =lambdax:x+1

print g(1)

>>>2

可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

def g(x):

   returnx+1

print g(1)

>>>2

非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。


Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce  


filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为Trueitem组成一个List/String/Tuple(取决于sequence的类型)。

#过滤是否被3整除

foo = [2,18,9,22,17,24,8,12,27]

print filter(lambdax:x%3==0,foo)

>>>[18, 9, 24, 12, 27]


map(function, sequence) :对sequence中的item依次执行function(item),将执行结果function(item)组成一个List返回。

foo = [2,18,9,22,17,24,8,12,27]

print map(lambda x:x*2+10,foo)
>>>[14, 46, 28, 54, 44, 58, 26, 34, 64]


reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用。

foo = [2,18,9,22,17,24,8,12,27]

print reduce(lambdax,y:x+y,foo)

>>>139



  lambda 定义了一个匿名函数

  lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

  如果可以使用for...in...if来完成的,坚决不用lambda。

  如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。


  总结:lambda 是为了减少单行函数的定义而存在的。








原创粉丝点击