zoukankan      html  css  js  c++  java
  • python中的lambda表达

    C++中的lambda表达式与C++11增加标准库,是一个简短的匿名的可调用对象,编译器会将其转化为一个匿名类的对象。lambda表达式的最大特点就是简短灵活。调用方便。它不须要处理非常复杂的逻辑。通常仅仅包括一两句简短的代码。

    python作为一种优雅简洁的脚本语言自然不会错过这样的机制。python中的lambda表达式形式例如以下:

    lambda 參数列表 : 表达式

    假设没有须要传递的參数,參数类表能够为空了,但表达式部分不能为空,由于lambda表达式必须有返回值。

    lambda表达式会返回一个值,这个值能够是一个计算结果。也能够是一个新的lambda表达式

    返回一个值:

    >>> f = lambda x,y : x+y //创建一个lambda表达式
    >>> print f(1, 2)        //调用lambda表达式
    3
    返回一个新的lambda表达式:

    >>> f = lambda x : lambda y : x+y  //嵌套的lambda表达式
    >>> a = f(1)                       //f(1)返回一个lambda表达式
    >>> b = a(10)
    >>> print b
    11


    以下看看常常与lambda表达式一起使用的三个python内建函数:filter,map,reduce

    1、filter(bool_func,seq):遍历列表seq中的每一个元素,传入返回值为bool类型的函数bool_func中,从列表中过滤出函数返回值为true的元素,得到一个新的列表

    <span style="font-size:10px;">>>> filter(lambda x : x > 3, [1, 2, 3, 4, 5])
    [4, 5]</span>
    2、map(func,seq1[,seq2...]):将列表通过func函数映射为一个新的列表
    >>> map(lambda x : x*2, [1, 2, [3, 4]])
    [2, 4, [3, 4, 3, 4]]

    3、reduce(func,seq[,init]):这里的func函数接受两个參数,reduce依次从seq中取一个元素传入func函数。还有一个參数是上一次func函数的返回值。第三个參数为可选參数,假设指定了init,则開始时将init和seq中的第一个元素传给func;假设没有指定。则開始时取seq的头两个元素给func。

    <span style="font-size:10px;">>>> reduce(lambda x,y : x + y,[1,2,3,4])  
    10  
    >>> reduce(lambda x,y : x + y,[1,2,3,4],10)  
    20  </span>




  • 相关阅读:
    Mysql_大字段问题Row size too large.....not counting BLOBs, is 8126.
    Pycharm快捷键设置(鼠标滚动控制字体大小)
    python实现将base64编码的图片下载到本地
    [CentOS_7.4]Linux编译安装ffmpeg
    contenOs7
    文本特征提取方法研究
    Mahout中相似度计算方法介绍
    基于Mahout的电影推荐系统
    向Python女神推荐这些年我追过的经典书籍
    Mahout推荐算法API详解
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5228591.html
Copyright © 2011-2022 走看看