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