首页 > 其他 > 详细

Lambda表达式

时间:2018-07-05 11:53:34      阅读:161      评论:0      收藏:0      [点我收藏+]

lambda(lambda 参数:函数体)表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

lambda就是用来定义一个匿名函数的,如下所示:

add = lambda x, y : x+y

add(1,2)  # 结果为3

 

Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:

map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:
>>> def cube(x):

     return x*x*x 
>>> map(cube, range(1, 11)) 
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x,y):

     return x + y 
>>> reduce(add, range(1, 11)) 
55 (注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20) 
75 (注:1+2+3+4+5+6+7+8+9+10+20)

 

filter(f,list):接收一个函数 f 和一个list,这个函数 f 的作用是对list每个元素进行判断,即f是判断方法,list是判断对象。filter()自动过滤掉非true的元素,返回由符合条件元素组成的新list。例如:

>>> list(filter(None,[1,0,True,False]))

[1, True]

>>> list(filter(lambda x:x*2,range(10)))                         

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(filter(lambda x:x%2,range(10)))

[1, 3, 5, 7, 9]

>>> list(filter(lambda x:x+2,range(10)))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(filter(lambda x:x-2,range(10)))

[0, 1, 3, 4, 5, 6, 7, 8, 9]

 

sorted

# 需求:将列表中的元素按照绝对值大小进行升序排列

list1 = [3,5,-4,-1,0,-2,-6]

sorted(list1, key=lambda x: abs(x))

 

当然,也可以如下:

list1 = [3,5,-4,-1,0,-2,-6]

def get_abs(x):   

   return abs(x)

sorted(list1,key=get_abs)

 

Lambda表达式

原文:https://www.cnblogs.com/zf612326/p/9267395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!