python是支持多種范型的語言,可以進(jìn)行所謂函數(shù)式編程,其突出體現(xiàn)在有這么幾個函數(shù): map、yield、lambda、filter、reduce 有了它們,最大的好處是程序更簡潔;沒有它們,程序也可以用別的方式實現(xiàn),只不過麻煩一些罷了。所以,還是能用則用之吧。更何況,恰當(dāng)?shù)厥褂眠@幾個函數(shù),能讓別人感覺你更牛X。 1. map(function, sequence)
map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是Iterable,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator返回。 例子: 1.1 一般方法 使用map實現(xiàn): map實現(xiàn) 2. yieldyield這個詞在漢語中有“生產(chǎn)、出產(chǎn)”之意,在python中,它作為一個關(guān)鍵詞(你在變量、函數(shù)、類的名稱中就不能用這個了),是生成器的標(biāo)志。含有yield關(guān)鍵詞的函數(shù)返回值是一個生成器類型的對象,這個生成器對象就是迭代器。只要用了yield語句,那個普通函數(shù)就神奇般地成為了生成器,也就具備了迭代器的功能特性。 用上yield的斐波那契數(shù)列 3. lambdalambda函數(shù),是一個只用一行就能解決問題的函數(shù) 基本樣式是:lambda arg1, arg2, ...argN : expression using arguments lambda函數(shù)的使用方法:
3.1 lambda這個函數(shù)替代add(x) 3.1 z的值 lambda求n的階乘 4.filter(function, sequence) filter的中文含義是“過濾器”,在python中,它就是起到了過濾器的作用,用于過濾序列。 和map()類似,filter()也接收一個函數(shù)和一個序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。 在一個list中,刪掉偶數(shù),只保留奇數(shù) 把一個序列中的空字符串刪掉 5. reduce(function, sequence, starting_value) 對sequence中的item順序迭代調(diào)用function,如果有starting_value,還可以作為初始值調(diào)用 reduce 6.sorted() sorted()函數(shù)就可以對list進(jìn)行排序 對list進(jìn)行排序 sorted()函數(shù)也是一個高階函數(shù),它還可以接收一個key函數(shù)來實現(xiàn)自定義的排序,例如按絕對值大小排序: 接收一個key函數(shù)來實現(xiàn)自定義的排序 給sorted傳入key函數(shù),即可實現(xiàn)忽略大小寫的排序 反向排序,不必改動key函數(shù),可以傳入第三個參數(shù)reverse=True |
|