簡體   English   中英

字典內的Lambda理解

[英]Lambda inside dictionary comprehension

我無法解釋此功能的工作原理,有人可以解釋花括號后的括號是什么意思嗎?

def max(a,b):
    f = {a >= b : lambda: a, b >= a: lambda: b}[True]
    return f()

對於max,這是一個非常復雜的定義( 奇怪的 ),基本上它創建了一個字典,其中的鍵為布爾值TrueFalse ,值是ab取決於哪個是最大值。 例如max(1,2)創建以下字典:

{ False: lambda: 1, True: lambda: 2}

然后,在上面的示例lambda: 2 ,為f分配了True值的函數,這是一個返回常數2的函數。 最后,該函數返回對f()的調用,即值2

為了更具體地回答您的問題,花括號后的方括號表示獲取True鍵字典的值。

f = {a >= b : lambda: a, b >= a: lambda: b}[True]

上面的語句將始終被評估為以下之一:

情況1:a> b

f = {True : lambda: a, False: lambda: b}[True]

這意味着f = lambda:a

這意味着f()是一個

情況2:b> a

f = {False: lambda: a, True: lambda: b}[True]

這意味着f = lambda:b

這意味着f()是b

情況3:a = b

f = {True : lambda: a, True: lambda: b}[True]

這意味着f = lambda: a或可能是f = lambda:b

這意味着f()是a或b

如果您不了解群集和lambda函數,將很難理解!

但是這個例子教了一些東西:

{"name": "Jundullah", "age": 18}["name"] #ouput: "Jundullah"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM