亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

希望哪位大神來注釋一下這個代碼,有點懵逼

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()

正在回答

5 回答

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可以實現將列表進行遍歷 計算
0 回復 有任何疑惑可以回復我~

中間的 der f這個函數作用是利用reduce特性遍歷list并同時賦予前后兩值的乘積操作 其實可以直接用for in遍歷list或者評論中寫出的reduce的其他用法

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

我感覺也是這樣

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

這么復雜的嗎?這個答案。沒必要。

def?calc_prod(lst):????
????#
????def?s():????????
????????return?reduce(lambda?x,y:x*y,lst)?????用lambda?替代?創建函數式
????????
return?sf?=?calc_prod([1,?2,?3,?4])
print?f()

或者 稍微不好看的(利用前面的知識):

def?calc_prod(lst):????
????#
????def?f(x,y):????????
????????return?x*y?
????????
????reduce(f,lst)?
????????
return?sf?=?calc_prod([1,?2,?3,?4])
print?f()
1 回復 有任何疑惑可以回復我~

我也是初學,我的理解是這樣,不知道對不對

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

4 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

希望哪位大神來注釋一下這個代碼,有點懵逼

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號