美文网首页
python 之lambda表达式

python 之lambda表达式

作者: 不分享的知识毫无意义 | 来源:发表于2019-08-08 17:09 被阅读0次

      lambda表达式算是python一种比较方便的语法了,主要作用是代替简单的函数,免去了编写函数的烦恼,语法也更加地简洁。下面就简单介绍一下lambda的使用场景。从本质上来讲,lambda是一个函数,可以接受参数输入。

    • lambda 基础用法
        lambda表达式的基础用法,做简单的加减乘除,或者格式修改操作。
    funca = lambda x: x+1 
    funca(2)
    out:3
    
    • lambda和if结合使用
        lambda表达式既然和函数一样那么也可以用逻辑控制流,用if去做判断,返回我们想要的东西。
    funcb = lambda x:x+1 if x==1 else 0
    funcb(1) 
    out:2
    funcb(2)
    out:0
    
    • lambda表示式和for循环结合使用
        跟if不一样,lambda表达式里用for循环会报错,但是也可以for循环一起用,只不过比较复杂,用了for循环生成的是一个由函数组成的列表。
    funcc = [lambda x: x+j for j in range(5)]
    [f(1) for f in funcc]
    out:[5, 5, 5, 5, 5]
    

      但是从上面的输出来看,又让人非常困惑,为什么全都是5,而不是[1,2,3,4,5]。这里需要解释的是:这个循环控制了输出五个lambda函数,但是每个函数都是执行到循环的最后一步,也就是说x+j实际上和x+4是等价的,每个函数都一样。

    • lambda表达式的嵌套使用
        这个虽然说也有用的,但是可读性特别差,尽量避免使用,毕竟用lambda表达式是为了简单,这么用实在是让人捉摸不透。还是举个例子:
    funcd = lambda: lambda x: x + 5
    funcdd = funcd()
    funcdd(3)
    out:8
    

      看完你应该也觉得没有任何意义吧。

    • lambda表达式和map函数结合使用
        我估计这个是最常用的使用方法,因为map本身的作用就是对一个list套用一个方法。来看例子。
    list1 = list(map(lambda x: x**2,[1,2,3,4]))
    out: [1, 4, 9, 16]
    
    • lambda表达式和filter函数结合使用
        这个是另一个比较重要的应用场景就是筛选出来符合条件的数据。
    list2 = list(filter(lambda x:x<=4,[2,3,4,5]))
    out:[2, 3, 4]
    
    • lambda表达式用于pandas
        pandas里的apply函数,可以用自己编写的lambda表达式这个是非常方便的,也是经常使用,举一个小数转化为百分比的案例吧。
    #先生成一个5行一列的dataframe
    pd_1 = pd.DataFrame([round(np.random.random(),2) for _ in range(5)])
    #数据长这样
          0
    0  0.95
    1  0.62
    2  0.04
    3  0.61
    4  0.77
    #接下来转换
    pd_2 = pd_1[0].apply(lambda x: '{:.0%}'.format(x))
    out:
    0    95%
    1    62%
    2     4%
    3    61%
    4    77%
    

    相关文章

      网友评论

          本文标题:python 之lambda表达式

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