[Python]用一行 map,reduce 计算 5!+4!+3!+2!+1!
2013-04-02 19:58
501 查看
#分析: #5!+4!+3!+2!+1 #对于一个数字的阶乘 reduce(lambda x,y:x*y,range(1,6)) #对于一组数字的加法 reduce(lambda x,y:x+y,range(1,6)) #如果我们用代数的方法,就是把range[1,6]这个数组换成,每个元素为1-5每个阶乘就行了 #[5!,4!,3!,2!,1!] #最笨得方法就是手动写5个,在笨一点就是for循环5个出来 #这是第一个版本,甚至连map都没有 def singles(): singles=[] for i in range(1,6): t=reduce(lambda x,y:x*y,range(1,i+1)) singles.append(t) return singles #singles() print reduce(lambda x,y:x+y,singles()) #试试把上面一部分精简下,我们发现可以用列表解析 [reduce(lambda x,y:x*y,range(1,i+1)) for i in range(1,6)] print reduce(lambda x,y:x+y,[reduce(lambda x,y:x*y,range(1,i+1)) for i in range(1,6)]) #但是我们还是没有用到map,原来我们可以用,map生成由个单个元素的阶乘的list map(lambda z :reduce(lambda x,y:x*y,range(1,z+1)) ,range(1,6)) #好像没办法把后面的元素传递到reduce函数里面,怎么办呢 #那我只好把reduce再次封装到一个lambda里了 print reduce(lambda x,y:x+y,map(lambda z :reduce(lambda x,y:x*y,range(1,z+1)) ,range(1,6)) ) #问题一步步拆解还是很好解决的,不是么
相关文章推荐
- Python 一行代码实现5!+4!+3!+2!+1!
- [Python]多线程threading函数方法--计算5!+4!+3!+2!+1!
- Python 一行代码实现5!+4!+3!+2!+1!
- python(map,reduce,filter)以及小例子(计算1-10的和,将大写字母字符串转换成小写字符串)
- Python高阶函数(Map、Reduce、Filter)
- python高阶函数:map(f,[list]),reduce(f,[list],可选初始值),
- 人工智能之Python10 map和reduce
- python 函数式编程 map、reduce用法
- python: reduce()函数、lambda函数、map()函数
- 03-天亮大数据系列教程之分布式计算框架Map/Reduce运行流程与应用
- python的几个内建函数:apply(),filter(),map(),reduce()
- python map/reduce framework
- Python 几个内建函数: map, reduce,filter,sorted 整理
- Python特殊语法:filter、map、reduce、lambda [转]
- Python碎片化知识:map,reduce,lambda以及zip
- Python 特殊语法filter、map、reduce、lambda
- Python中的filter、map、reduce、lambda函数
- 【转】Python特殊语法:filter、map、reduce、lambda
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)