当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘
全部博文(57)
分类: Python/Ruby
2014-08-25 12:14:41
从名字就可以看出,它可以减少元素个数,其用法如下:它有两个参数,第一个参数是个函数,当然也可以是lambda表达式,且用lambda的时候比函数的时候多,毕竟比较方便,第二个参数是个列表。这个函数或lambda是用来对列表进行递归处理的。函数或lambda有特殊要求,必须是二个参数,这个两参数处理后得到结果作为新值继续参与运算。
函数或lambda的二个参数是从列表中依次取出来的,理解的重点是,你可以认为列表的元素数量是动态减少的,比如
reduce(lambda x,y:x*y, [1,2,3,4,5])
那么先取列表[1,2,3,4,5]中前两个,1*2得到2,这时列表更新为[2,3,4,5],再继续取2和3,得到2*3=6,列表更新为[6,4,5],依次进行直到最后一个。
所以,其最终效果是1*2*3*4*5。这显然是个递归的过程,示意如下:
(lambdaFun ( lambdaFun(lambdaFun(1,2),3),4),5)。
从这看出来,Python真太强大了。
那么,用它来实现字符串逆向就比较方便了。
Def reverseStr(s):
Return reduce(lambda x,y:y+x,s).
这里将字符串当成一个列表,y和x代表字符串的各个位置上的值,由原来的x,y就y+x就实现了逆序。