Python 18:map/reduce

2018-05-03  本文已影响0人  Cc曹子恒

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
上一篇 下一篇

猜你喜欢

热点阅读