• 4.1、高阶函数


    1、map/reduce

    Python内建了map()reduce()函数。

    map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

    举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下:

     r=map(f,[1,2,3,4,5])

     reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

    reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)

     

    ( ((1X10+2)X10+3)X10+4)+5

    char2int:返回数字字符对应的值,map()得到字符串对应的所有数值

    fn将两个数值变成一个十位数,reduce()得到一串数对应的数

    def normalize(name):
        return name[0].upper()+name[1:].lower()
    list(map(normalize,['adam', 'LISA', 'barT']))
    
    ['Adam', 'Lisa', 'Bart']
    def prod(L):
        return reduce(lambda x, y: x  * y,L)
    
    prod([9,7,3,5])
    945
    def str2float(s):
        for i in range(len(s)):
            if s[i]=='.':
                break
        m=reduce(lambda x,y:x*10+y,map(int,s[0:i]))
        n=reduce(lambda x,y:x*0.1+y,map(int,s[:i:-1]))
        return m+n*0.1
    str2float('123.45467')123.45467

     2、filter

    Python内建的filter()函数用于过滤序列。

    map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

    过滤,生成一个新的序列

    def zhishu(k):
        return lambda x:x%k>0          #过滤掉可以被k整除的数,k=2,3,5...不断调用下一个,可用next()
    
    def f(n):
        it=(x+1 for x in range(1,n))    #生成一个从2开始的generator
        while True:                            #循环
            k=next(it)                         #从2开始调用,it的数减掉k
            yield k                              #返回k
            it=filter(zhishu(k),it)         #过滤后只剩下不能被2整除的数,第一个数变3....
    
    m=f(10)                                #输出由k组成的generator
    for i in m:
        print(i)                 
    def huishu(a):
        for i in range(len(a)):
            return len(a)==1 or a[i]==a[-i-1]
    
    def ff(n):
        L=[str(i) for i in range(1,n+1)]         
        m=filter(huishu,L) 
        print(list(m))

     3、sorted

     sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序

    key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。

     

  • 相关阅读:
    TortoiseSVN 命令 (命令行执行工具)(转)
    express blend下载
    js绝对地址图片转换成base64的方法
    js判断是否安装flash player及当前版本 和 检查flash版本是否需要升级
    js实现默认或者触发一个事件选中元素内容的方法
    js实现复制功能,将需要复制的内容放入剪切板上
    前端js上传文件插件
    javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)
    html5 canvas 画图移动端出现锯齿毛边的解决方法
    jquery实现全选/反选功能
  • 原文地址:https://www.cnblogs.com/soberkkk/p/12623781.html
Copyright © 2020-2023  润新知