这是从我的个人技术分享网站里面复制的
一、map函数
map函数接收两个参数,一个数函数,另一个序列,比如list或者tuple,返回的值是一个list,情况下面的例子:
print "老佛爷:小李子,去统计一下宫女们如厕时间多久,超过二十分钟罚200元" zgc=[15,20,22,30,10,8,3,27] def WC(t): if(type(t)==int or type(t)==float): if(t<20): return "不罚款" else: return "罚款200" else: return "您输入的参数有误,请传入整型或者浮点型的参数" result=map(WC,zgc) print "李莲英:喳,经过清点和统计,一号宫女至%d号宫女的罚款情况如下:"%(len(zgc)) for i in result: print i 运行结果: 老佛爷:小李子,去统计一下宫女们如厕时间多久,超过二十分钟罚200元 李莲英:喳,经过清点和统计,一号宫女至8号宫女的罚款情况如下: 不罚款 罚款200 罚款200 罚款200 不罚款 不罚款 不罚款 罚款200
上面的map(WC,zgc)这个map函数就是将WC分别作用于zgc这个list,然后返回一个list,赋值给result
二、reduce函数
reduce把一个函数作用在一个序列(list或者tuple)上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素进行计算,情况下面的例子:
print "语文老师:下面是一位结巴患者说的断断续续的话,元芳,你把他给我一句话复述清楚咯" zgc=['我是','人见人爱','花见花开的','人间美女','如花妹子'] sm='' for i in zgc: if(sm==''): sm=sm+i else: sm=sm+'...'+i print sm def talk(x,y): if(type(x)==str and type(y)==str): return x+y else: return "你输入参数的类型有问题" zgc_1=reduce(talk,zgc) print "元芳:我的一句话复述是:" print zgc_1 运行结果如下: 语文老师:下面是一位结巴患者说的断断续续的话,元芳,你把他给我一句话复述清楚咯 我是...人见人爱...花见花开的...人间美女...如花妹子 元芳:我的一句话复述是: 我是人见人爱花见花开的人间美女如花妹子
上面例子中的reduce(talk,zgc)就是先让talk函数对zgc[0]和zgc[1]进行处理,并用出来结果作为另个参数和zgc[2]进行处理,其实reduce(talk,zgc)就是在执行下面这个过程:talk(talk(talk(talk(zgc[0],zgc[1]),zgc[2]),zgc[3]),zgc[4])
我要在线运行一下程序: