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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有人可以一步步解釋一下這個過程嗎

有人可以一步步解釋一下這個過程嗎

慕斯709654 2023-07-18 16:33:37
def m():    return[lambda x:x*i for i in range(4)]print([m(9) for m in m()])我要一步步執行。
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

函數m返回 4 個函數的列表lambda。這些函數中的每一個都采用一個參數 ,x并返回一個值,該值是通過將該值乘以 來計算的i。其目的可能是分別為這 4 個 lambda 函數中的每一個i采用連續值 0、1、2 和 3(由函數生成)。range但是,這些 lambda 函數不會i在創建時進行復制,而是會i在調用時使用當前的值。當函數m返回 4 個 lambda 函數的列表時,具有來自函數i的最終值。因此,所有 4 個 lambda 函數都是相同的,并將其參數乘以 3 并返回該乘積作為結果。3range

[m(9) for m in m()]是一個列表推導式,它將創建一個列表,其中每個元素都是通過第一次調用而連續創建的,對于返回的列表中的m()每個值,正如我們所見,它是一個 lambda 函數,它將其參數乘以 3,并使用參數調用該函數m9 并獲取結果 (27) 并將其附加到正在創建的新列表中。因此,我們最終得到一個包含 4 個元素的列表,所有元素都是 27, [27, 27, 27, 27],然后將其打印出來。


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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