Python的Lambda表示式

2021-07-16 14:20:38 字數 1536 閱讀 4632

python的 lambda 表示式,本質上仍是乙個函式。通常是在

需要乙個函式,但這個函式也許就用這一次,或者這個函式異常簡單,於是不想去耗費時間精力定義乙個函式的場合下使用。由於是沒有名字的函式,所以lamba也通常叫匿名函式

這種場景在實際應用中其實很常見:你在某處就真的只需要乙個能做一件事情的函式而已,連它叫什麼名字都無關緊要,lambda 表示式就可以用來做這件事。

看網上舉的較多的lambda配合map的例子:

a = [0, 1

, 2, 3

, 4, 5]

print(list(map(lambda x: x ** 2

, a)))

與下面的顯式函式sq()定義功能相同。

def 

sq(x):

return x ** 2

a = [0, 1

, 2, 3

, 4, 5]

print(list(map(sq,a)))

輸出結果都是:

[0, 1, 4, 9, 16, 25]

實際上這種情況下用列表推導式效果更好。

a = [0, 1

, 2, 3

, 4, 5]

print([x ** 2

for x in a])

參考:

個人認為lambda用在一些較複雜結構序列的sort/sorted、max,min等操作中更能發揮作用。示例:

scores = [['michael'

, 4.0], ['lisa'

, 4.2], ['jack'

, 5.0], ['rose'

, 4.5], ['tony'

, 3.5]]

scores表示每個人和相應得分的巢狀列表,需要按得分進行排序操作,用lambda表示式:

print('max_scores='

, max(scores,

key=lambda x: x[1]))

scores.sort(key=lambda x: x[1])

print('scores='

, scores)

輸出結果:

max_scores= ['jack', 5.0]

scores= [['tony', 3.5], ['michael', 4.0], ['lisa', 4.2], ['rose', 4.5], ['jack', 5.0]]

lambda的使用非常方便,但python 為了防止lambda的濫用,造成可讀性下降和程式不清晰的問題, 限制lambda只能由1條表示式組成。也就是回歸lambda的本質,執行簡單操作的無名(匿名)函式。對於簡單的,易於理解的,用lambda沒問題,但是對於較複雜的操作和運算,進行正常的函式定義吧。

Python的Lambda表示式

介紹 lambda表示式是python中一類特殊的定義函式的形式,使用它可以定義乙個匿名函式。與其它語言不同,python的lambda表示式的函式體只能有唯一的一條語句,也就是返回值表示式語句。其語法如下 lambda 形參列表 函式返回值表示式語句 下面是個lambda表示式的例子 12 34 ...

Python中的lambda表示式

lambda 是為了減少單行函式的定義而存在的。如果可以使用for.in.if來完成的,堅決不用lambda。g lambda x x 1g 1 2 g 2 3 當然,你也可以這樣使用 lambda x x 1 1 2可以這樣認為,lambda作為乙個表示式,定義了乙個匿名函式,上例的 x為入口引數...

python中的lambda表示式

簡單來說,程式設計中提到的 lambda 表示式,通常是在需要乙個函式,但是又不想費神去命名乙個函式的場合下使用,也就是指匿名函式。這一用法跟所謂 演算 題目說明裡的維基鏈結 的關係,有點像原子彈和質能方程的關係,差別其實還是挺大的。不談形式化的 演算,只說有實際用途的匿名函式。先舉乙個普通的 py...