python的 lambda 表示式,本質上仍是乙個函式。通常是在
需要乙個函式,但這個函式也許就用這一次,或者這個函式異常簡單,於是不想去耗費時間精力定義乙個函式的場合下使用。由於是沒有名字的函式,所以lamba也通常叫匿名函式。
這種場景在實際應用中其實很常見:你在某處就真的只需要乙個能做一件事情的函式而已,連它叫什麼名字都無關緊要,lambda 表示式就可以用來做這件事。
看網上舉的較多的lambda配合map的例子:
a = [0, 1, 2, 3
, 4, 5]
print(list(map(lambda x: x ** 2
, a)))
與下面的顯式函式sq()定義功能相同。
defsq(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'scores表示每個人和相應得分的巢狀列表,需要按得分進行排序操作,用lambda表示式:, 4.0], ['lisa'
, 4.2], ['jack'
, 5.0], ['rose'
, 4.5], ['tony'
, 3.5]]
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...