课程
/后端开发
/Python
/python进阶
def calc_prod(lst):
def lazy_prod():
def f(x,y):
return x*y
return reduce(f,lst,1)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
reduce(f,lst,1)有什么用
2017-10-29
源自:python进阶 2-8
正在回答
reduce是python中的一个高阶函数,接受的函数必须有两个参数,然后是list,函数的作用就是对list中的每一项连续作用,即list[0]和list[1]带入函数取得结果再和list[2]作为两个参数传入函数继续计算,直接到所有list中的项都参与了计算,第三个参数1代表是计算的初始值,这个例子不太好,考虑这个值是100,那就是100*reduce(f,lst)。在这个问题中,如果不使用reduce,那么你就要去遍历list,再一个个乘,相比之下,代码更高效简洁,试想一下,如果此时你要改变你的函数,就只需要在函数里改就好,而不需要动下面的逻辑。
qq_一世一浮生_0 提问者
reduce()接收一个函数 f,一个list即lst,reduce()对lst的每个元素反复调用函数f,并返回最终结果值,reduce()接收第3个参数即f,lst,1中的1,作为计算的初始值。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计