• 课时21:函数:lambda表达式


    目录:

      一、lambda表达式

      二、介绍两个BIF:filter()和map()

      三、课时21课后习题及答案

    *********************

    一、lambda表达式

    *********************

    Python允许使用lambda关键字来创建匿名函数。

    先来定义一个普通的函数:

    >>> def ds(x):
        return 2 * x + 1
    
    >>> ds(5)
    11

    如果使用lambda语句来定义这个函数,就会变成这样:

    >>> lambda x : 2 * x + 1
    <function <lambda> at 0x00000172968578C8>

    Python的lambda表达式语法非常精简,基本语法是在冒号(:)左边放原函数的参数,可以有多个参数,用逗号(,)隔开即可;冒号右边是返回值。在上面的例子中我们发现lambda语句实际上是返回一个函数对象,如果要对它进行使用,只需要进行简单的操作即可:

    >>> g=lambda x : 2 * x + 1
    >>> g(5)
    11

    下面演示lambda表达式两个参数的例子:

    >>> def add(x,y):
        return x + y
    
    >>> add(3,4)
    7
    >>> g = lambda x , y :x + y
    >>> g(3,4)
    7

    lambda表达式的作用:

    (1)Python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。

    (2)对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名的问题了。

    (3)简化代码的可读性,由于普通的屌丝函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。

    *******************************************

    二、介绍两个BIF:filter()和map()

    *******************************************

     1、filter()

    我们研究的第一个内建函数是一个过滤器。我们每天会接触到大量的数据,过滤器的作用就显得非常重要了,通过过滤器,就可以保存你所关注的信息,把其它不感兴趣的东西直接丢掉。那Python如何来实现过滤功能呢?先来看看Python自己的注释:

    >>> help(filter)
    Help on class filter in module builtins:
    
    class filter(object)
     |  filter(function or None, iterable) --> filter object
     |  
     |  Return an iterator yielding those items of iterable for which function(item)
     |  is true. If function is None, return the items that are true.
     |  
     |  Methods defined here:
     |  
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |  
     |  __iter__(self, /)
     |      Implement iter(self).
     |  
     |  __next__(self, /)
     |      Implement next(self).
     |  
     |  __reduce__(...)
     |      Return state information for pickling.
     |  
     |  ----------------------------------------------------------------------
     |  Static methods defined here:
     |  
     |  __new__(*args, **kwargs) from builtins.type
     |      Create and return a new object.  See help(type) for accurate signature.

    大概意思是:filter有两个参数。第一个参数可以是一个函数也可以是None,如果是一个函数的话,则将第二个可迭代数据里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。举个例子:

    >>> temp = filter(None,[1,0,False,True])
    >>> list(temp)
    [1, True]

    利用filter(),尝试写一个筛选奇数的过滤器:

    >>> def odd(x):
        return x%2
    
    >>> temp = filter(odd,range(10))
    >>> list(temp)
    [1, 3, 5, 7, 9]

    那现在学习了lambda函数后,完全可以把上述过程转化为一行:

    >>> list(filter(lambda x:x%2,range(10)))
    [1, 3, 5, 7, 9]

    2.map()

    map在这里不是地图的意思,在编程领域,map一般作“映射”来解释。map()这个内置函数也有两个参数,仍然的hi一个函数和一个可迭代序列,将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕,返回所有加工后的元素构成的新序列。

    举个例子:

    >>> list(map(lambda x:x*2,range(10)))
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

    *******************************

    三、课时21课后习题及答案

    *******************************

    爱笑的男孩运气都不会差
  • 相关阅读:
    条码的开发使用介绍文档
    identity server4
    IUrlHelper ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
    netcore 版本 切换 sdk
    深层目录文件复制,C# 递归,录音录像图片文件过多,用于测试程序
    C# int uint long ulong byte sbyte float double decimal 范围,及类型!
    sqlserver 数据类型 C# clr 数据类型 映射
    Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'xxxxx.Controllers.xxxxController'.
    identity 基础表没有创建 aspnetuserclaims aspnetuserlogins
    DatabaseGeneratedOption
  • 原文地址:https://www.cnblogs.com/DC0307/p/9475504.html
Copyright © 2020-2023  润新知