为了账号安全,请及时绑定邮箱和手机立即绑定

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)有什么用


正在回答

2 回答

reduce是python中的一个高阶函数,接受的函数必须有两个参数,然后是list,函数的作用就是对list中的每一项连续作用,即list[0]和list[1]带入函数取得结果再和list[2]作为两个参数传入函数继续计算,直接到所有list中的项都参与了计算,第三个参数1代表是计算的初始值,这个例子不太好,考虑这个值是100,那就是100*reduce(f,lst)。在这个问题中,如果不使用reduce,那么你就要去遍历list,再一个个乘,相比之下,代码更高效简洁,试想一下,如果此时你要改变你的函数,就只需要在函数里改就好,而不需要动下面的逻辑。

2 回复 有任何疑惑可以回复我~
#1

qq_一世一浮生_0 提问者

非常感谢!谢谢
2017-11-29 回复 有任何疑惑可以回复我~

reduce()接收一个函数 f,一个list即lst,reduce()对lst的每个元素反复调用函数f,并返回最终结果值,reduce()接收第3个参数即f,lst,1中的1,作为计算的初始值。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

python初学者

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信