美文网首页
Python 18:map/reduce

Python 18:map/reduce

作者: Cc曹子恒 | 来源:发表于2018-05-03 18:03 被阅读0次

    python内置可map()和reduce()函数。
    我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
    举例说明,函数f(x) = x平方,把这个函数作用在list[1,2,3,4,5,6,7,8,9]上,可以用map()实现:

    >>> def f(x):
                return x * x
    >>> r = map(f, [1,2,3,4,5,6,7,8,9])
    >>> list(r)
    [1,4,9,16,25,36,49,64,81]
    

    把list所有数字转为字符串:

    >>> list(map(str, [1,2,3,4,5,6,7,8,9]))
    ['1', '2', '3', '4', '5', '6', '7', '8', '9']
    

    reduce的用法,reduce把一个函数作用在一个序列[x1,x2,x3,...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,效果是:
    reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3)x4)比方说对一个序列求和,就可以用reduce实现:

    >>> from functools import reduce 
    >>> def add(x, y)
                return x +y
        
    >>> reduce(add, [1,3,5,7,9])
    25
    

    把str转换为int函数:

    >>> from functools import reduce 
    >>> def fn (x, y):
                return x * 10 + y
    >>> def charnum(s):
                digts = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
                return digits[s]
    >>> reduce(fn, map(charnum, '13579'))
    13579
    

    相关文章

      网友评论

          本文标题:Python 18:map/reduce

          本文链接:https://www.haomeiwen.com/subject/hjpnlftx.html