课程
/后端开发
/Python
/python进阶
这里为什么是1?
2016-05-06
源自:python进阶 2-8
正在回答
Python中的reduce(func,list,initial),其中initial表示累计初始值,是可选参数,如果省略,则系统默认为list[0],我记得这个一节课程中的f函数是计算两个数乘积的,所以initial=1表示list中的所有数从乘1开始,如果是2的话就从乘2开始,你可以自己改变下参数试试
没有什么不可能 提问者
我觉得是不是因为相乘是2个数,为了防止LIST 只有1个数所以给个1,开始是1*list[0],反正是乘法,1是无所谓的。不知道对不对。
这个我试了下,没有1为啥结果也是24
Python中的reduce(func,list,initial),其中initial表示累计初始值,是可选参数,这些说的都没错,initial也是可以省略的,但是赋了值不是代表从哪开始,不管赋不赋值,list成员都会计算完,而initial只是在list计算的结果再进行一次func的计算,例如
list=[1,2,3,4]
print reduce(lambda x,y:x+y,list,1)
打印list和初始值的和,list里1-4和是10,所以最后的结果initial是1,就是11;是2,就是12,你可以试一下。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计