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

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

Python 嵌套 lambda 列表僅執行 lambda 列表的最后一個元素

Python 嵌套 lambda 列表僅執行 lambda 列表的最后一個元素

青春有我 2023-10-31 14:32:44
以下代碼片段演示了嵌套 lambda 列表僅計算原始 lambda 列表的最后一個元素。eqs_test = [    (lambda x: f"0"),    (lambda x: f"1"),    (lambda x: f"2"),    (lambda x: f"3"),]# unexpected outputprint([a(1) for a in [    lambda x: f"{e1(0)}-{e2(0)}" for e1, e2 in zip(eqs_test[1:], eqs_test[:-1])]])# expected output (no outer lambda used here for testing)print([a for a in [    f"{e1(0)}-{e2(0)}" for e1, e2 in zip(eqs_test[1:], eqs_test[:-1])]])輸出是:['3-2', '3-2', '3-2']['1-0', '2-1', '3-2']我希望在這兩種情況下都有第二個輸出,但不知何故,lambda 沒有正確存儲(3-2只是最后生成的 lambda)。這里發生了什么以及如何以運行正確的嵌套 lambda 的方式存儲外部 lambda?
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

為了使第一個示例正常工作,請將變量存儲為 lambda 參數。否則,lambda 將始終打印e1和的最后一個值e2:


eqs_test = [

    (lambda x: f"0"),

    (lambda x: f"1"),

    (lambda x: f"2"),

    (lambda x: f"3"),

]


# unexpected output

print([a(1) for a in [

    lambda x, e1=e1, e2=e2: f"{e1(0)}-{e2(0)}" for e1, e2 in zip(eqs_test[1:], eqs_test[:-1])

]])

印刷:


['1-0', '2-1', '3-2']


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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