zoukankan      html  css  js  c++  java
  • map() reduce()

    1 高阶函数

      既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

    1 def f01(x, y) :
    2     return x * y
    3     
    4 def f02(x, y, f) :  # 函数名作为参数
    5     return f01(x, y)
    6     
    高阶函数例子

    2 map()

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

    1 def f03(x) :
    2     return x + 1
    3 a = [1,2,3]
    4 print('map()前',a)
    5 a = list(map(f03, a)) # 利用map()给a列表的每个元素进行+1操作
    6 print('map()后', a)
    map()简例

      注意:map()传入的第一个参数是f,即函数对象本身。由于结果r是一个IteratorIterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。

    3 reduce()

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

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

    1 def f01(x, y) :
    2     return x * y
    3 b = [1,2,3,4]
    4 from functools import reduce
    5 b = reduce(f01, b)
    6 print('reduce()后的结果', b)
    7 # 运行结果: reduce()后的结果 24
    reduce()简例

    4 map() 和 reduce()的综合应用

     1 def str_float(s) :
     2     def str_num(s) :
     3         return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
     4 
     5     n = s.index('.') # 计算 . 在字符串中的位置
     6     
     7     str01 = s[0:n] + s[n+1:] # 用于存储除去 . 过后的字符串
     8     print(str01)
     9     print('str01_type', type(str01))
    10     
    11     lis01 = list(map(str_num, str01)) # 将去除 . 过后的字符串变成列表,并存放在lis01中
    12     print(lis01)
    13     print('lis01_type', type(lis01))
    14     
    15     p = len(s) - n - 1 # 计算 . 后面还有多少位数字
    16     
    17     def num_int(x, y) :
    18         return (x * 10) + y
    19     from functools import reduce
    20     return reduce(num_int, lis01) / pow(10, p)
    21 a = '12.123'
    22 print('', type(a), a)
    23 a = str_float(a)
    24 print('', type(a), a)
    综合应用
  • 相关阅读:
    一道Twitter面试题
    聊下并发和Tomcat线程数(错误更正)
    Entity Framework系列教程汇总
    SqlServer基础汇总
    .Net Core中间件和过滤器实现错误日志记录
    快速掌握mongoDB(六)——读写分离的副本集实现和Sharing介绍
    快速掌握mongoDB(五)——通过mongofiles和C#驱动操作GridFS
    快速掌握mongoDB(四)—— C#驱动MongoDB用法演示
    快速掌握mongoDB(三)——mongoDB的索引详解
    快速掌握mongoDB(二)——聚合管道和MapReduce
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/6549269.html
Copyright © 2011-2022 走看看