美文网首页
【Python】-015-函数-函数式编程-3-lambda表达

【Python】-015-函数-函数式编程-3-lambda表达

作者: 9756a8680596 | 来源:发表于2017-08-08 23:15 被阅读22次

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表达式

相关文章

网友评论

      本文标题:【Python】-015-函数-函数式编程-3-lambda表达

      本文链接:https://www.haomeiwen.com/subject/bjgulxtx.html