希望哪位大神來注釋一下這個代碼,有點懵逼
def calc_prod(lst):
??? def lazy_prod():
??????? def f(x,y):
??????????? return x * y
??????? return reduce(f,lst)
??? return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def calc_prod(lst):
??? def lazy_prod():
??????? def f(x,y):
??????????? return x * y
??????? return reduce(f,lst)
??? return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2019-12-08
舉報
2020-07-21
return reduce(f, lst, 1)
f(x, y) = x*y
#reduce(f(x, y), [1, 2, 3, 4], 1) 計算出來的結果是? 1*1*2*3*4 = 24
reduce可以實現將列表進行遍歷 計算2020-04-25
中間的 der f這個函數作用是利用reduce特性遍歷list并同時賦予前后兩值的乘積操作 其實可以直接用for in遍歷list或者評論中寫出的reduce的其他用法
2020-04-02
我感覺也是這樣
2020-02-01
這么復雜的嗎?這個答案。沒必要。
或者 稍微不好看的(利用前面的知識):
2019-12-08
我也是初學,我的理解是這樣,不知道對不對
print f()
執行f函數,而f=calc_prod([1, 2, 3, 4]),意味著f函數是calc_prod([1, 2, 3, 4])調用之后返回的函數對象。即lazy_prod函數。也就是說調用的其實是lazy_prod()函數,lazy_prod函數返回的是reduce(f,lst),也就是對lst集合進行f函數的reduce操作,其次就進入f(x,y)函數,這個函數返回的是x*y,也就是對lst集合進行累乘操作,結果就是1*2*3*4=24