• python 高阶函数学习, map、reduce


    一个函数可以接收另一个函数作为参数,这样的函数叫做高阶函数。

    函数map():

    map()函数接收两个参数,一个是函数,一个是Iterable, map把函数作用于序列的每一个元素,并把结果作为Iterator返回。

    注意,返回的是生成器Iterator,所以取返回值的时候需要用for,或者next,或者通过list序列化之后才能取出来

    举例:

    def f(x):
    return x * x #定义一个函数f(x),返回值是两个数的乘积

    r = map(f, [1, 2, 3, 4, 5, 6]) #通过map函数让f(x)作用于后面序列的每一个元素
    print('print(r)', r) #直接打印r,得到的是r变量指向的地址
    ==》print(r) <map object at 0x02658A30>

    print('list(r) = ', list(r)) #把r序列化之后返回一个list输出
    ==》list(r) =  [1, 4, 9, 16, 25, 36]

    #通过for循环输出
    for n in r:
    print(n)
    ==》

    1
    4
    9
    16
    25
    36

    #通过next()输出:

    while True:
    try:
    print(next(r))
    except StopIteration as e:
    print(e.value)
    break

    ==》

    1
    4
    9
    16
    25
    36
    None

    reduce(f, [])函数:
    需要传入两个参数,一个是函数f,这个函数f必须有两个参数,作用于后面的参数。reduce把计算的结果继续作用于f和序列的下一个元素
    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    举例1:
    def f(x, y): #定义一个函数,这个函数必须有两个参数
    return x * y #返回值是两个数的乘积

    #把函数f作为参数传入reduce函数
    print(reduce(f, [1, 2, 3, 4]))
    ==》24

    解析:
    第一步:f(1, 2),输出的结果是1 * 2 = 2
    第二步:第一步输出的结果被当做第二步的第一个参数传入计算 f(2, 3),输出的结果是 2 * 3 = 6
    第三步:同理第二步 f(6, 4) => 6 * 4 = 24

    举例2:
    def MySum(x, y):
    return x + y

    print(reduce(MySum, [1, 2, 3, 4, 5]))
    ==》1+2+3+4+5=15




  • 相关阅读:
    JAVA 8学习笔记-第五章
    JAVA 8学习笔记-第一章
    JAVA 8学习笔记-第二章
    MySQL应用
    Mac给iTerm2终端配色
    masOS支持NTFS读写,无需第三方软件
    macOS Apache配置用于支持Python CGI编程
    Vim
    Thrift
    Netflix Hystrix
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8081854.html
Copyright © 2020-2023  润新知