美文网首页
【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