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]
    >>> 
     

    说好的练习题呢?!!
  • 相关阅读:
    6、CC2541修改按键调节广播发送功率例程为持续发送4DB的蓝牙基站
    [nRF51822] 16、nRF51822的随机数生成器,及随机数生成器的一些知识(可以帮您补补随机数发生器的知识)
    [PCB设计] 4、BAT脚本处理AD生成的GERBER文件为生产文件
    [异常解决] 奇巧淫技——VirtualBox中的linux无显示启动,并在win7上远程控制
    [PCB设计] 3、用CAM350修改GERBER文件(删除某些部分)
    [异常解决] Make nRF51 DFU Project Appear "fatal error: uECC.h: No such file or directory"
    [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)
    [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一
    [模拟电路] 2、Passive Band Pass Filter
    Docker常用命令
  • 原文地址:https://www.cnblogs.com/fishdm/p/3574074.html
Copyright © 2011-2022 走看看