1、 map函数
map()是 python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的object并返回。(python2返回列表,Python3返回迭代对象)
map()的使用方法形如map(f(x),Itera),它有两个参数,第一个参数为某个函数,第二个为可迭代对象。
基本用法:
注意:python3中map()返回的是一个object,因为map()转变成了迭代器来节约空间,返回的是可迭代对象。
如果需要list可以直接用list(……)来强制返回一个列表。
Map的主要作用就是:并行!并行!并行!map函数和zip函数都是用来进行并行运算,迭代等。
在多进程编程中,Pool池的用法中一种就是利用map函数开启多进程,可以大大提高程序的效率。
Map原理:

在最简单的形式中,map()带一个函数和队列,将函数作用在序列的每个元素上,然后创建由每次函数应用组成的返回值列表。
mapped_seq.append(func(eachItem))>>> print(mymap(tes,range(10)))[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list(map(lambdax,y:x+y,[1,3,5,7,9],[2,4,6,8,10])) s1=s[0:1].upper()+s[1:].lower()>>> list(map(format_name,['adam','LISA','barT']))>>> l2=map(lambdax,y:x**y,[1,2,3],[1,2,3])>>> l3=map(lamdax,y:(x**y,x+y),[1,2,3],[1,2,3])SyntaxError: invalid syntax>>> l3=map(lambdax,y:(x**y,x+y),[1,2,3],[1,2,3])>>> l4=map(lambdax,y:(x**y,x+y),[1,2,3],[1,2])>>> l4=map(lambdax,y:(x**y,x+y),[1,2,3],[1,2,'a'])Traceback (most recent call last): File "<pyshell#107>", line 1, in <module> File "<pyshell#104>", line 1, in <lambda> l4=map(lambda x,y:(x**y,x+y),[1,2,3],[1,2,'a'])TypeError: unsupported operand type(s) for** or pow(): 'int' and 'str'
2、reduce函数
reduce()函数在库functools里,如果要使用它,要从这个库里导入。reduce函数与map函数有不一样地方,map操作是并行操作,reduce函数是把多个参数合并的操作,也就是从多个条件简化的结果,在计算机的算法里,大多数情况下,就是为了简单化。比如识别图像是否是一只猫,那么就是从众多的像素里提炼出来一个判断:是或否。可能是几百万个像素,就只出来一个结果。在GOOGLE大规模集群里,就是利用这个思想,把前面并行处理的操作叫做map,并行处理之后的结果,就需要简化,归类,把这个简化和归类的过程就叫做reduce。reduce()的使用方法形如reduce(function, iterable[, initializer]),它的形式和map()函数一样。不过参数f(x)必须有两个参数,initializer是可选的。

reduce 使用了一个二元函数(一个接收带带两个值作为输入,进行了一些计算然后返回一个值作为输出),一个序列,和一个可选的初始化器,卓有成效地将那个列表的内容"减少"为一个单一的值,如同它的名字一样。>>> from functools import reduce>>> res=reduce(add,[1,2,3,4,5])

它通过取出序列的头两个元素,将他们传入二元函数来获得一个单一的值来实现。然后又用这个值和序列的下一个元素来获得又一个值,然后继续直到整个序列的内容都遍历完毕以及最后的值会被计算出来为止。
python培训班:http://www.baizhiedu.com/python2019
本文内容来自公众号: python与算法学习