zoukankan      html  css  js  c++  java
  • python中的内置函数lambda map filter reduce

    参考:https://www.cnblogs.com/caizhao/p/7905094.html

    1.lambda表达式

    lambda的功能类似于定义一个匿名函数,它简化了函数定义的书写方式,使代码更简洁

    基本格式:lambda 参数,参数...:函数功能代码

    举栗:

    g=lambda x:x+1,在该表达式中x为入口参数,x+1为函数体,其用函数来表示为:

    def f(x):

         return x+1

    g(1)=2,g(2)=3,g(1)也可表达为lambda x:x+1(1)

    两个入参的栗子:

    #方式1.声明一个简单的lambda表达式

    mylamb = lambda x,y:x+y

    #调用函数

    result = mylamb(4,5)

    扩展:

    练习条件运算时,对于简单的if else语句,可以使用三元运算来表示,即:

    if 1==1:
        name='qpy'
    else:
        name='wjx'

    用三元运算的方式表达:

    name='qpy' if 1==1 else 'wjx'

    对于简单的函数,也存在一种简单的表达方式,或者说lambda存在意义就是对简单函数的简洁表达,栗子可参考最初的举栗。

    其他栗子:

    aa=[{'id':4,'name':'a'},{'id':1,'name':'b'},{'id':7,'name':'c'}],想要将aa按照字典中的id来排序,可以使用

    sorted(aa, key=lambda x:x['id'])

    2.map

    map的功能是遍历序列,对序列中每个元素进行操作,最终获取新的序列,整个过程如下:

     

    在python 3.0中,使用map的返回值是一个对象,可以使用for...in获取对象中的值,python2中返回的是一个list

    map函数的参数有两个,map(f,list),f是一个函数,list是待操作的序列。其中,函数f的入参个数与list的个数一致。

    举栗1:函数f的入参以及list只有一个

    foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

    map(lambda x: x * 2 + 10, foo) 输出为[14, 46, 28, 54, 44, 58, 26, 34, 64]

    该例子可用for in语句来表示,即print [x * 2 + 10 for x in foo] 

    举栗2:函数f的入参以及list有两个

    li = [11, 22, 33]

    sl = [1, 2, 3]

    map(lambda a, b: a + b, li, sl) 输出为[12, 24, 36]

    举栗3:自定义函数f

    def f(x):

       return x * 2 + 10 

    li = [11, 22, 33]

    map(f,li) 输出为[32, 54, 76]

    3.filter

    filter,它是对序列中的元素进行筛选,最终获取符合条件的序列

    在python 3.0中,使用filter的返回值是一个对象,可以使用for...in获取对象中的值,python2中返回的是一个list

    举栗1:

    foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

    filter(lambda x: x % 3 == 0, foo) 输出为[18, 9, 24, 12, 27]

    该例子可用for in语句来表示,即print [x for x in foo if x % 3 == 0]

    举栗2:

    li = [11, 22, 33]

    new_list = filter(lambda arg: arg > 22, li)

    该例子可用for in语句来表示,即print[i for i in li if i >22]

    4.reduce

    reduce对于序列内所有元素进行累计操作

     

    在python 3.0后, reduce已经不在built-in function里了, 要用它就得from functools import reduce

    reduce函数的参数有3个,reduce(f,list,init_val),f是一个函数,list是要循环的序列,init_val是初始值(可选)。其中,函数f的入参必须有两个,list只有一个,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

    举栗1:

    li = [11, 22, 33]

    result = reduce(lambda arg1, arg2: arg1 + arg2, li) 输出结果为:66

    result = reduce(lambda arg1, arg2: arg1 + arg2, li,100) 输出结果为:166

  • 相关阅读:
    构造函数
    时延(delay,latency)
    吞吐量
    带宽(band-width)
    单位
    bps
    比特(bit)
    速率
    C语言中的“>>”和“<<”
    C#中unit
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/12022150.html
Copyright © 2011-2022 走看看