zoukankan      html  css  js  c++  java
  • Python学习笔记系列——高阶函数(map/reduce)

    一、map

    #变量可以指向函数,函数的参数能接受变量,那么一个函数就可以接受另一个函数作为参数,这种函数被称之为高阶函数
    def add(x,y,f):
        return f(x)+f(y)
    print(add(-5,-9,abs))
    
    '''  map()函数接受两个参数,一个是函数,一个是Iterable。map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回。
    举例函数作用说明:把f(x)作用在list的每一个元素并把结果生成一个新的list。  '''
    def f(x):
        return x*x
    r=map(f,[1,2,3,4,5,6])
    print(list(r))
    
    L=list(map(str,[1,4,7,2,5,8]))
    print(L)

    二、reduce

    from functools import reduce
    '''  reduce把一个函数作用在一个序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素做累积计算。
    即reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)  '''
    #将序列[1,5,9]转换成整数159
    def add(x,y):
        return x*10+y
    result=reduce(add,[1,5,9])
    print(result)
    
    #将str类型转换成int
    def fn(x,y):
        return x*10+y
    def char2num(s):
        digite =  {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
        return digite[s]
    ms=reduce(fn,map(char2num,'13579'))
    print(ms)

    三、练习

    #首字母大写
    def normallize(name):
        return name.capitalize()
    L1 = ['adam', 'LISA', 'barT']
    L2 = list(map(normallize,L1))
    print(L2)
    
    #接收一个list并求积
    def prod(x,y):
        return x*y
    r1 = [3,5,7,9]
    r2 = reduce(prod,r1)
    if r2 ==945:
        print('procedure success')
    else:
        print('procedure fail')
    
    #把字符串'123.456'转换成浮点数123.456
    def str2float(s):
        def fun(x,y):
            return x*10+y
        def char2num(s):
            digite = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
            return digite[s]
        n=s.index('.')
        s1=list(map(char2num,s[:n]))    #s1 = list(map(int, s[:n]))
        s2=list(map(char2num,s[n+1:]))  #s2 = list(map(int, s[n+1:]))
        return reduce(fun,s1)+reduce(fun,s2)/10**len(s2)
    print(str2float('123.456'))

    ___愿先生心境,四季如春

  • 相关阅读:
    [LeetCode]Sort List
    [LeetCode]Single Number II
    合并两个排序的列表
    翻转链表
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    二进制中1的个数
    矩形覆盖
    变态跳台阶
  • 原文地址:https://www.cnblogs.com/zichuan/p/10040157.html
Copyright © 2011-2022 走看看