Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400066
  • 博文数量: 57
  • 博客积分: 193
  • 博客等级: 入伍新兵
  • 技术积分: 1192
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-13 14:37
个人简介

当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘

文章分类

全部博文(57)

文章存档

2017年(5)

2015年(7)

2014年(27)

2013年(18)

我的朋友

分类: 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],再继续取23,得到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).

这里将字符串当成一个列表,yx代表字符串的各个位置上的值,由原来的x,yy+x就实现了逆序。

阅读(1433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~