高階函數可以接收函數做參數,有些時候,我們不需要顯式地定義函數,直接傳入匿名函數更方便。
在Python中,對匿名函數提供了有限支持。還是以map()函數為例,計算 f(x)=x * x時,f(x)就是作為參數傳入map的。
在前面,我們是顯式的定義了一個f(x)的函數,除此以外,其實可以直接傳入匿名函數。
匿名函數使用lambda定義:lambda x: x * x,就可以完成原來顯式定義的f(x)函數的功能,冒號前面的x表示匿名函數的參數,后面的是一個表達式,匿名函數有個限制,就是只能有一個表達式,不寫return,返回值就是該表達式的結果。
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]
同理,對于reduce()函數,也同樣可以通過定義匿名函數來實現相同的邏輯。
from functools import reduce reduce(lambda x, y: x + y, [1,3,5,7,9])
對字符串排序時,有時候忽略大小寫排序更符合習慣。請利用sorted()高階函數和lambda匿名函數,實現忽略大小寫排序的算法。
輸入:['bob', 'about', 'Zoo', 'Credit']
輸出:['about', 'bob', 'Credit', 'Zoo']
參考答案:
sorted(['bob', 'about', 'Zoo', 'Credit'], key=lambda item: item.lower())
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報