zoukankan      html  css  js  c++  java
  • Python map/reduce

    2017-07-31 18:20:59

    一、map函数

    map():会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的iterator,即迭代器,使用list函数可以将之转成列表。

    • map(function, iterable, ...)
      • function -- 函数
      • iterable -- 一个或多个序列
    def f(x):
        return x ** 2
    
    print(type(map(f,[1,2,3])))
    print(list(map(f,[1,2,3])))
    
    # <class 'map'>
    # [1, 4, 9]

    map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的 f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串等。

    二、reduce函数

    reduce():函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作,用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

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

    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    • reduce(function, iterable[, initializer]):
      • function -- 函数,有两个参数
      • iterable -- 可迭代对象
      • initializer -- 可选,初始参数
    from functools import reduce
    
    def add(x,y):
        return x+y
    
    print(reduce(add,list(range(10))))

    # 45

     可以使用reduce来进行str转int

    from functools import reduce
    
    def str2int(s):
        def fn(x, y):
            return x * 10 + y
        def char2num(s):
            return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
        return reduce(fn, map(char2num, s))
  • 相关阅读:
    点语法
    第一个OC的类
    gitlab教程
    php接收post的json数组
    phpstorm10.0.2三月22号补丁原来的网址被封了
    冰点下载器在转换pdf的时候出现停止工作
    乱码问题
    有用的网址(php)
    ubuntu16.04安装mysql5.6
    MapUtils常用方法
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/7264736.html
Copyright © 2011-2022 走看看