美文网首页
Python的lambda表达式

Python的lambda表达式

作者: 躺在稻田里的小白菜 | 来源:发表于2018-06-22 15:18 被阅读0次

    一. lambda表达式

    Python中定义了一种快速简化定义匿名函数的方式叫做lambda表达式,它的作用就是代替一些简单的函数,使得代码看上去更简洁并且可读性高。

    • lambda函数是匿名的
    • lambda函数一般功能简单
    • lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,如语法规则里面的例子。
    • lambda函数有输入和输出,输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。

    二. lambda语法规则

    lambda argument_list: expression
    表达式由3部分构成:ps.不要忘记冒号 ' : '

    • lambda关键字:Python的保留字,开始一个lambda表达式
    • argument_list:参数列表,和函数的参数表类似,表达式中出现的参数需要在argument_list中有定义
    • expression:函数的功能(简单),并且表达式只能是单行的,函数的返回值是该表达式的结果。
      举个栗子:
    add = lambda x, y : x+y
    add(1,2)  # 结果为3
    

    三. 用途

    lambda表达式的使用,一直争议比较大,毕竟增加了程序员的阅读成本。一般来说,作为匿名函数lambda经常使用在函数的参数中,或者pandas数据筛选等等。
    部分Python内置函数接收函数作为参数。典型的此类内置函数有这些。

    • map(function, iterable, ...)序列映射函数:
      function是函数名,iterable...是一个或者多个序列;序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的列表的迭代器。
    a=[1,2,3,4,5]
    b=[1,1,1,1,1]
    m=map(lambda x,y: x+y,a,b)
    for i in m:
        print(i)
    
    Out[1]:
    2 3 4 5 6
    
    • sorted(iterable, cmp=None, key=None, reverse=False)排序函数:
      sorted 可以对所有可迭代的对象进行排序操作。iterable是可迭代序列;cmp是定义比较规则的函数,它具有两个参数,参数的值都是从iterable中取出,此函数必须遵守,大于则返回1,小于则返回-1,等于则返回0;key是定义比较元素的函数,只有一个参数,是从iterable中取出的;reverse = True 降序 , reverse = False 升序。
      cmp很少自定义,默认遵循数学中的大小关系。
    #按照年龄排序
    student=[('Tom','boy',12),('Marry','girl',13),('LiMing','boy',11)]
    s=sorted(student,key=lambda x:x[2],reverse=True)
    print(s)
    
    Out[2]:
    [('Marry', 'girl', 13), ('Tom', 'boy', 12), ('LiMing', 'boy', 11)]
    
    • filter(function, iterable)序列过滤函数:
      第一个参数为过滤函数名,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中返回。
    student=[('Tom','boy',12),('Marry','girl',13),('LiMing','boy',11)]
    s=filter(lambda x:x[1]=='boy', student)
    Out[3]:
    ('Tom', 'boy', 12)
    ('LiMing', 'boy', 11)
    

    相关文章

      网友评论

          本文标题:Python的lambda表达式

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