首页 > 编程知识 正文

lambda函数与普通函数的区别,lambda函数有什么用

时间:2023-05-04 21:11:22 阅读:269006 作者:2802

    lambda语句块是函数的一种实现方式,称为匿名函数。在撸代码的时候,常常会想写一个函数,但是这个函数只会被调用一次,独立编写的这个函数就会十分污染环境了。lambda这个时候就发挥了作用,能够使代码更加简洁,某种程度上,一句话或者一行就实现的功能,可读性更高。

    lambda经常配合内置函数map、filter和reduce出现,使用列表推广常常可以替代这些功能,且可读性更高,一般不要使用内置函数。

1、lambda语句构成

    f=lambda x:x+1

    f是匿名函数的名称,可以通过f来调用该函数,:左边是参数,可以有多个,右边是表达式或者返回值


    表达式也可以很复杂


2、内置函数

    (1)map

    map是对列表进行映射,列表的元素个数不会发生改变,也可以使用列表推导来替代

    map的定义为:map(func, *iterables),第一个参数为映射规则(表达式或函数),第二个参数是需要迭代运算的元组(列表,输入函数后不可变,因此使用元组)



    这里是lambda方法和列表推导两种方法,对l1列表所有元素加1,列表推导更加容易理解,可读性更高


    这里加入了条件判断,lambda语句中if语句必须增加else,而列表推导则没有这个要求。

    

    该示例中,map的参数1给的是一个函数,将s的全部字符改为小写。这其实与lambda没有本质区别,因为lambda本质也是一个函数。

(2)filter

    顾名思义有,filter就是按照某种规则,筛选数据

    该内置函数的定义为:filter(function or None, iterable),与map的使用基本一样,下面给出几个样例



    使用lambda筛选列表中大于2的数据,一样可以用列表推导来实现:


    列表推导的可读性会更高。

(3)reduce

    reduce是对输入列表的所有数据按照给定表达式进行迭代运算

    reduce(function, sequence[, initial]) -> value


    值得注意的是,使用reduce函数,需要从functools中导入,而map、filter则不需要。

    

    

(4)内置函数在Series、DataFrame中的引用

    Series、DataFrame中使用map时只需要输入表达式,而不需要再输入列表,Series、DataFrame继承了map,下面给出一个较长的例子说明:


    该案例中,d1和字典c1是已知的,d1原来有3个columns,现在要增加一个columns,也就是dd列,而dd列由集合c1根据d1的aa列的值作为键查询得到。计算时候,由于d1中有大写字母也有小写字母,因此先把字符串全部转化为小写,这个过程通过输入str.lower函数来实现。

    当然,使用列表推导,一样可以实现该功能,只是可读性显示不是那么好:


    在Series和DataFrame中没有找到reduce方法,这么简单介绍一下filter方法,主要是因为其like参数功能在某些场合使用起来十分方便(详细请查看Series.filter的DOC文档)。


    如上,通过输入items列表可以选择指定columns的Series,构成一个新的DataFrame。

    like参数允许只输入index或columns标签的部分值,axis指定在index或columns中进行查找,输出是所有满足条件的数据构成的新的DataFrame


map、reduce、filter的图片引用自:http://www.cnblogs.com/guigujun/p/6134828.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。