• 什么是lambda函数


    匿名函数lambda:指一类无需定义的标识符(函数名)的函数或子程序。lambda函数可以接收任意多个参数(包括可选参数)并且返回单个表达式的值。

    example:

    In [36]: p = lambda x, y: x *y         lambda 后面x,y是参数 ,:号后面的是表达式, p相当于接受匿名函数的返回值                                                                                                                                                                                                                                     
    
    In [37]: c = p(2,3)     p加括号传参,调用lambda函数, 得到运算 2 * 3 结果 6                                                                                                                                                                                                                                                
    
    In [38]: print(c)      打印结果c                                                                                                                                                                                                                                                   
    6                      得到结果值6

    匿名函数一般和python内置函数连用

    example:
    请按alist中元素的age由大到小排序
    
    alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]
    
    def  sort_by_age(list1):
          return sorted(alist, key=lambda x : x['age'], reverse=True)

    lambda 与内置函数filter连用

    filter函数
    filter函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换成列表,可以使用list()来转换。
    该接收两个参数,第一个参数为函数,第二个参数为序列,序列的每个元素作为参数传递给函数进行判,然后返回True或者Flase
    最后返回True的元素放到新的列表中
    以下是filter方法的用法:
    filter(function, iterable)

    params:
    function -- 判断函数
    iterable -- 可迭代对象
    返回值 返回一个迭代器

    for example:

    def is_odd(n):
      return n % 2 == 1
    tmplist = filter(is_odd, [1,2,3,4,5,6,7,8,9,10]
    newlist = list(tmplist)
    print(newlist)
    输出结果:
    [1,3,5,7,9]

    函数式编程与内置函数

    a = [1,2,3,4,5,6]
    b = filter(lambda x: x>5, a)
    for i in b:
      print(i)

    a = map(lambda x : x*2 ,[1,2,3])
    print(list(a))

    lambda函数

    lambda表达式就是一个函数,可以赋值给一个变量,既然是表达式,可以参与运算。

    lamnda x: x**2      

    这个匿名函数的形参是x,表达式x**2的值就是这个函数的返回值

    好处:

    lambda只是一个表达式,函数体比def简单的多。

    lambda的主体是一个表达式,而不是一个代码块,仅仅能在lambda表达式中封装有限的逻辑进去

    lambda 表达式是起到一个函数快写的作用,允许在代码块内嵌入一个函数的定义

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列 分块+树状数组+主席树
    BZOJ 3744 Gty的妹子序列 分块+树状数组
    51nod 1850 抽卡大赛 (十二省联考模测) DP
    BZOJ 4127: Abs (树链剖分 线段树求区间绝对值之和 带区间加法)
    BZOJ 2157: 旅游 (树链剖分+线段树)
    BZOJ 2836: 魔法树 (树链剖分+线段树)
    BZOJ 3531: [Sdoi2014]旅行 (树剖+动态开点线段树)
    树状数组彻底入门,算法小白都看得懂的超详细解析
    点双联通分量(BCC)的正确姿势
    uoj30【CF Round #278】Tourists(圆方树+树链剖分+可删除堆)
  • 原文地址:https://www.cnblogs.com/tangda/p/12888252.html
Copyright © 2020-2023  润新知