Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
从上学时开始,通常是用C来求阶乘,今天无事,用python写了一下,主要在于学习lambda和reduce这两个函数的使用。
就是用函数function对序列,如list中的元素进行处理,每次处理两个数据项(一个是前次处理的结果,一个是序列中的下一个元素),如此反复的递归处理,最后对整个序列求出一个单一的返回值。
运行结果:
实现:
测试:
我们感兴趣的不在程序本身,我想更多地会关注lambda和reduce这两个函数,我们来看一下:
lambda
手册中这样描述:
其实lambda就是个匿名函数,它本身是一个表达式,而def为一个语句,这就是说lambda可以用于函数中做为参数等,但def这个语句不能。我们的 lambda x,y:x*y 语句等价于下面这个函数:
reduce
手册中这样描述:
就是用函数function对序列,如list中的元素进行处理,每次处理两个数据项(一个是前次处理的结果,一个是序列中的下一个元素),如此反复的递归处理,最后对整个序列求出一个单一的返回值。
改写一下上面的程序,很快可以理解这句话的意思:
运行结果:
不积跬步,无以至千里;不积小流,无以成江海。