map/reduce 属于高阶函数
map第一个参数是函数f,第二是f的参数a,map的返回值是参数a是经过函数f运算后的返回结果集合。
例子:
def f(x):
return x + x
[r for r in map(f,[1,2,3,4])]
输出的是:
[2, 4, 6, 8]
与之等价的列表生成式:
[f(r) for r in [1,2,3,4]]
输出的结果与上面一致
reduce第一个参数也是f,第二是f的参数a,这里与map一致,差异在对函数f调用处理,reduce是递归调用f对参数a的运算。注:函数f必须是可以接受两个参数,参数a必须含有两个元素以上的集合
例子:
from functools import reduce
def f(x,y):
return x*y
r = reduce(f,[1,2,3,4,5])
r
输出的结果:
120
与之对应的非reduce:
r = f(f(f(f(1,2),3),4),5)
r
输出的结果:120
对于列表生成式是相对比较简单的,当然高级的使用方式另说,其格式为
[expr for iter_var initerable]
[expr for iter_var initerable if cond_expr]
简单的例子如下:
a = [r for r in [1,2,3,4]]
a
输出的结果:
[1, 2, 3, 4]
与之等效的迭代结构:
a = []
for r in [1,2,3,4]:
a.append(r)
a
输出的结果:
[1,2,3,4]
这里仅仅是超级粗糙和简单的使用map、reduce、列表生成器的例子。