zoukankan      html  css  js  c++  java
  • 021,lambda 表达式

    021,lambda 表达式

     匿名函数: 快速定义单行的最小函数,是从lisp借用来的,可以用在任何需要函数的地方
    >>> def ds(x):
        return 2*x + 1
     
    >>> ds(5)
    11
    >>> lambda x : 2*x + 1
    <function <lambda> at 0x025913D8>
    >>> g = lambda x : 2*x + 1
    >>> g(5)
    11
      
    >>> def add(x,y):
        return x + y
     
    >>> add(3,4)
    7
    >>> lambda x,y : x + y
    <function <lambda> at 0x025009C0>
    >>> g = lambda x,y : x + y
    >>> g(3,4)
    7
     
        python写一些执行脚本时候,使用lambda就可以省下定义函数的过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
        对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名的问题了。 
        简化代码的可读性,由于普通的函数阅读经常要调到开头def定义部分,使用lambda函数可以省去这样的步骤。 
    基础:lambda语句中,冒号前是参数,可以有多个用逗号隔开,冒号右边的返回值。其实lambda语句构造的是一个函数对象。
    例子:

    >>> def myadd(x,y):
        return (x + y)
     
    >>> from functools import reduce
    >>> sum = reduce(myadd,(1,2,3))
    >>> sum
    6
      
    重要的bif 
    filter() 过滤器,先看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.
    意思大概是,filter有两个参数 ,第一个参数可以是None对象也可以是一个函数function,第二个参数是可迭代的数据,如果第一个参数是个函数的话,将第二个可迭代数据里的每个元素作为函数的参数进行计算,把返回True的值筛选出来,并成一个列表,如果第一个参数为None,则将第二个参数里的True的值给筛选出来。

    鸟语不懂,举例说明:
     
    >>> filter(None,[1,0,False,True])
    <filter object at 0x024F4810>
    >>> list(filter(None,[1,0,False,True]))
    [1, True]
    >>> 
     是把任何非True的内容过滤掉。
     筛选奇数:
    普通写法:
     
    >>> def odd(x):
        return x % 2
     
    >>> temp = range(10)
    >>> show = filter(odd,temp)
    >>> list(show)
    [1, 3, 5, 7, 9]
    >>> 
     用lambda表达式写法: 
    >>> list(filter((lambda x : x% 2),range(10)))
    [1, 3, 5, 7, 9]
    >>> 
     
    map() 
    class map(object)
     |  map(func, *iterables) --> map object
     |  
     |  Make an iterator that computes the function using arguments from
     |  each of the iterables.  Stops when the shortest iterable is exhausted.
     将序列的每个元素作为函数的参数进行运算加工,直到可迭代序列的每个元素都加工完毕,返回所有加工后的元素构成的新序列 
    >>> list(map(lambda x : x * 2 , range (10)))
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    >>> 
     

    说好的练习题呢?!!
  • 相关阅读:
    C# 关于反射事件
    SqlBulkCopy 帮助类
    【转载】FormsAuthenticationTicket 对象
    c# 安全队列
    用户离职后网盘数据交接的实现
    网盘文件被下载过的记录查询脚本(亲测有效)
    学校搭建教学资源库平台的成熟方案
    【不务正业】太空工程师自动导航v1.0 beta
    golang的sort研究
    关于golang的defer的练习
  • 原文地址:https://www.cnblogs.com/fishdm/p/3574074.html
Copyright © 2011-2022 走看看