(11)lambda表达式用法

时间:2023-03-09 19:47:08
(11)lambda表达式用法

* lambda 简述
    lambda只是一个表达式,函数体比def简单很多
    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义
    lambda可以有多个参数列表
    lambda表达式也叫匿名函数
   
* 简单例子
   result = lambda x:x+3
   求一个数加3的结果
  
   fun = lambda x,y:x*y
   求两个数相乘
  
   g = lambda x : x**2
   print g(4)
   数的平方
  
* 和其它函数组合
    map() 将序列中的元素通过处理函数处理后返回一个新的列表
        li = [1, 2, 3, 4, 5]
        # 序列中的每个元素加1
        map(lambda x: x+1, li) # [2,3,4,5,6]
       
    filter() 将序列中的元素通过函数过滤后返回一个新的列表
        # 返回序列中的偶数
        filter(lambda x: x % 2 == 0, li) # [2, 4]
       
    reduce() 将序列中的元素通过一个二元函数处理返回一个结果
        # 返回所有元素相乘的结果
        reduce(lambda x, y: x * y, li) # 1*2*3*4*5 = 120 
       
    sorted() 结合lambda对列表进行排序
    sorted用法:
        sorted(iterable, cmp=None, key=None, reverse=False)--> new sorted list terable:是可迭代类型;
        cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
        key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
        reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
        * 返回值:是一个经过排序的可迭代类型,与iterable一样。
    sorted(data, key=lambda d: d['sort_time'], reverse=True)