python匿名函数简记

一、匿名函数:python使用lambda来创建匿名函数。所谓匿名,就是说不再使用def语句这样标准的形式来定义一个函数。
  1、lambda只是一个表达式,不是一个代码块,函数体比def简单的同时,也有’难以封装更多的逻辑进lambda表达式‘的不足。
  2、lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  3、虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
  4、语法:lambda [arg1 [,arg2,.....argn]]:expression
    如:result = lambda x: x * x      #result是一个匿名函数,'lambda'和':'中间的元素个素就是所说的参数个数。':'后面的是所要进行的表达式。
    print(result(5)) #输出25

  这里顺便拓展一下lambda和map函数一起用的例子,以熟悉一下map等内置函数:
  a、map():是python的一个内置函数,基本格式是:map(func,seq):func是一个函数对象,seq是一个序列对象,seq的每个元素按照从左到右的顺序依次被取出来,塞到func函数里,并将func的返回值依次存到一个列表里。
    eg:>>>numbers = [1,3,6]
      >>>newNumbers = tuple(map(lambda x:x,numbers))
      >>>print(newNumbers) #输出:(1,3,6)

    eg:>>> numbers = [0,1,2,3,4]
      >>> map(add,numbers) #输出[1, 2, 3, 4, 5]
      >>> map(lambda x: x + 1,numbers) #输出[1, 2, 3, 4, 5]

  b、filter():根据条件过滤选择出想要的。
    eg:>>> numbers = range(-4,4)
      >>> list(filter(lambda x: x > 0,numbers)) #输出[1,2,3]

  c、reduce():reduce 函数的第一个参数是一个函数,第二个参数是序列类型的对象,将函数按照从左到右的顺序作用在序列上。
    eg:>>> reduce(lambda x,y: x+y,[1,2,3,4]) #输出10

  reduce()和map()的区别:map相当于是上下运算的,而reduce是从左到右逐个元素进行运算。
    eg:>>> list1 = [1,2,3,4]
      >>> list2 = [5,6,7,8]
      >>> list(map(lambda x,y: x + y,list1,list2))#输出[6, 8, 10, 12]

原文地址:https://www.cnblogs.com/yangrongkuan/p/12073787.html