• lambda函数的特性


    lambda表达式可以理解为一种抽象的函数实现方法,这种方式只有最基本的三个步骤:给与参数,表达式实现,返回结果。这种方式非常干净,减少了内存的使用,整个程序少了函数的污染,代码格式也会更为简练。但在python中的使用是受限的,只能进行简单的表达式计算。

    下面简单给一个知乎扒的代码示范一下:

    func = (lambda x:x**i for i in xrange(4))
    for i in func:
        i(4)
    1
    4
    16
    64

    上面代码的含义很简单,for i in xrange(4)会返回一个列表[0,1,2,3],而func对象实际上是一个迭代器iterator,对其遍历之后就会返回这样一个结果:

    (lambda x:x**0)
    (lambda x:x**1)
    (lambda x:x**2)
    (lambda x:x**3)

    然后在进行lambda表达式的计算。

    也就是说:

    i(0) = (lambda x:x**0)
    i(1) = (lambda x:x**1)
    i(2) = (lambda x:x**2)
    i(3) = (lambda x:x**3)

    最后自然就会返回1,4,16,64这样一个结果。

     再举一个map,filter函数与lambda函数结合使用的例子:

    >>> l = ['foo', 'bar', 'far']
    >>> map(lambda x: x, l)
    ['foo', 'bar', 'far']
    >>> filter(lambda x: 'f' in x, l)
    ['foo', 'far']
    >>> map(lambda x: x.upper(), filter(lambda x: 'f' in x, l))
    ['FOO', 'FAR']

    map(a,b)会在a,b之间建立一个映射关系,将a实际上是b中一个元素,lambda函数会以a为参数进行表达式运算,之后再返回结果。

    同理filter也是如此,只不过filter只会返回lambda函数返回值为真的元素。

  • 相关阅读:
    网络信息安全攻防学习平台第7题
    深入理解读写锁ReentrantReadWriteLock
    彻底理解ReentrantLock
    (三)应该了解关于并发相关的概念
    (二)并发编程的优缺点
    Linux Makefile多目录的编写
    libcurl 下载上传
    MFC枚举USB设备碰到的一个疑难,还没解决
    MFC一个令人纠心的错误
    如何为你的App获取用户的反馈和5星级评论
  • 原文地址:https://www.cnblogs.com/hksac/p/5523024.html
Copyright © 2020-2023  润新知