lambda
表达式
-
语法,返回匿名函数,给变量
lambda 参数:操作(参数)
-
示例
add = lambda x, y: x + y print add(9, 1) //10
-
一些应用场景
#结合filter和map函数 listNum = [random.randint(-10, 10) for i in range(5)] //[-3, 4, 4, 3, -3] list1 = filter(lambda x: x>0, listNum) //[4, 4, 3] list2 = map(lambda x: x**2, listNum) //[9, 16, 16, 9, 9] #排序 c = sorted(listNum, cmp=lambda x,y:x-y) //listNum待排序列表,cmp为排序函数,x-y的意思是x-y大于0往后排,所以是递增排序,返回排序后的列表 listNum.sort(cmp=lambda x,y: x-y) //直接修改原始列表
函数返回
-
函数作为参数返回,应用场景多出现在闭包中
-
例子:
# coding: utf-8 def calc(s): //返回函数 if s=="+": return lambda a, b: a+b elif s=="-": return lambda a, b: a-b elif s=="*": return lambda a, b: a*b else: assert False, "Error!" if __name__ == "__main__": calcDict = { //字典返回函数 "+": lambda a,b: a+b, "-": lambda a,b: a-b, "*": lambda a,b: a*b, } print "5*10=", calcDict["*"](5,10) print "3+7=", calcDict["+"](3, 7) print "10-3=",calcDict["-"](10, 3) ## (a+b)*(c-d) a,b,c,d = 1,2,3,4 print "(1+2)*(3-4)=", calc("*")(calc("+")(a, b), calc("-")(c, d)) print "1+2*3-4=", calcDict["-"](calcDict["+"](a, calcDict["*"](b,c)), d)
参考文献
1.lambda表达式
网友评论