高階函數(shù)可以接收函數(shù)做參數(shù),有些時(shí)候,我們不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便。
在Python中,對(duì)匿名函數(shù)提供了有限支持。還是以map()函數(shù)為例,計(jì)算 f(x)=x * x時(shí),f(x)就是作為參數(shù)傳入map的。
在前面,我們是顯式的定義了一個(gè)f(x)的函數(shù),除此以外,其實(shí)可以直接傳入匿名函數(shù)。
匿名函數(shù)使用lambda定義:lambda x: x * x,就可以完成原來(lái)顯式定義的f(x)函數(shù)的功能,冒號(hào)前面的x表示匿名函數(shù)的參數(shù),后面的是一個(gè)表達(dá)式,匿名函數(shù)有個(gè)限制,就是只能有一個(gè)表達(dá)式,不寫return,返回值就是該表達(dá)式的結(jié)果。
result = [item for item in map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])] print(result) # ==> [1, 4, 9, 16, 25, 36, 49, 64, 81]
同理,對(duì)于reduce()函數(shù),也同樣可以通過(guò)定義匿名函數(shù)來(lái)實(shí)現(xiàn)相同的邏輯。
from functools import reduce reduce(lambda x, y: x + y, [1,3,5,7,9])
對(duì)字符串排序時(shí),有時(shí)候忽略大小寫排序更符合習(xí)慣。請(qǐng)利用sorted()高階函數(shù)和lambda匿名函數(shù),實(shí)現(xiàn)忽略大小寫排序的算法。
輸入:['bob', 'about', 'Zoo', 'Credit']
輸出:['about', 'bob', 'Credit', 'Zoo']
參考答案:
sorted(['bob', 'about', 'Zoo', 'Credit'], key=lambda item: item.lower())
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)