欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python函數(shù)式編程—高階函數(shù)

 更新時間:2019年03月29日 09:53:20   作者:宮城詩  
這篇文章主要介紹了Python函數(shù)式編程—高階函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

函數(shù)式編程就是一種抽象程度很高的編程范式,純粹的函數(shù)式編程語言編寫的函數(shù)沒有變量,因此,任意一個函數(shù),只要輸入是確定的,輸出就是確定的,這種純函數(shù)我們稱之為沒有副作用。而允許使用變量的程序設(shè)計語言,由于函數(shù)內(nèi)部的變量狀態(tài)不確定,同樣的輸入,可能得到不同的輸出,因此,這種函數(shù)是有副作用的。

函數(shù)式編程的一個特點就是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù),還允許返回一個函數(shù)!

Python對函數(shù)式編程提供部分支持。由于Python允許使用變量,因此,Python不是純函數(shù)式編程語言。

高階函數(shù)

變量可以指向函數(shù)


函數(shù)名其實就是變量

函數(shù)名是什么?函數(shù)名其實就是指向函數(shù)的變量,對于abs這個函數(shù),完全可以把函數(shù)名看做成為一個變量,

傳入函數(shù)

既然變量可以指向函數(shù),函數(shù)的參數(shù)可以接受變量,那么一個函數(shù)就可以當(dāng)做另一個函數(shù)的變量,這種函數(shù)就被稱為高階函數(shù)

def add(x,y,f):
	return f(x)+f(y)

下面介紹一個內(nèi)置的高階函數(shù)

map接受兩個參數(shù),一個是Iterable一個是函數(shù)。map將傳入的函數(shù)依次作用于到序列的每一個元素上,有點想列表生成式,并把結(jié)果作為寫的Iterator返回

map得到的結(jié)果是一個Iterator,所以要用list()函數(shù)讓整個序列變成一個list
list不是Iterator因為是[] , generator 是Iterator()
可以使用iter來將Iterable變成Iterator


本實例,實驗了str

reduce用法

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

比如對一個序列求和

fliter

filter用于過濾序列,和map類似,filter也接受一個函數(shù)和一個序列,和map不同的是,filter把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素

def is_odd(n):
  return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 結(jié)果: [1, 5, 9, 15]

filter與reduce和map一樣,反悔的都是Iterator惰性序列,需要用list轉(zhuǎn)換

關(guān)于slice中的切片

str[::2]相當(dāng)于正數(shù)開始2個一取,str[::-2]從倒數(shù)第一個元素開始,2個一取

Sorted

排序算法

排序也是在程序中經(jīng)常用到的算法,無論使用冒泡排序還是快速排序,排序的核心是比較兩個元素的大小。
數(shù)字我們可以直接比較,但如果是字符串或者是兩個dict

sorted也是一個高階函數(shù),可以用key函數(shù)來實現(xiàn)自定義的排序

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

默認情況下,對字符串排序,是按照ASCII的大小比較的,由于'Z' < ‘a(chǎn)',結(jié)果,大寫字母Z會排在小寫字母a的前面。

這樣,我們給sorted傳入key函數(shù),即可實現(xiàn)忽略大小寫的排序:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

要進行反向排序,不必改動key函數(shù),可以傳入第三個參數(shù)reverse=True:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

map reduce filter sorted

以上所述是小編給大家介紹的Python函數(shù)式編程—高階函數(shù)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 徹底卸載anaconda詳細教程(推薦!)

    徹底卸載anaconda詳細教程(推薦!)

    用anaconda更改我的python版本,就是出現(xiàn)了凍結(jié)無法更改等等之類的問題,擔(dān)心更新anaconda還是會出錯,于是打算卸載anaconda,重新下載一個安裝,下面這篇文章主要給大家介紹了關(guān)于徹底卸載anaconda的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • python爬取微信公眾號文章的方法

    python爬取微信公眾號文章的方法

    這篇文章主要為大家詳細介紹了python爬取微信公眾號文章的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • pyQt4實現(xiàn)俄羅斯方塊游戲

    pyQt4實現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細介紹了pyQt4實現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python實現(xiàn)的各種常見分布算法示例

    Python實現(xiàn)的各種常見分布算法示例

    這篇文章主要介紹了Python實現(xiàn)的各種常見分布算法,結(jié)合實例形式總結(jié)分析了Python常見的各種分布算法相關(guān)實現(xiàn)技巧,包括二項分布、離散分布、泊松分布、正態(tài)分布、指數(shù)分布等算法實現(xiàn)方法,需要的朋友可以參考下
    2018-12-12
  • 解決pycharm下載庫時出現(xiàn)Failed to install package的問題

    解決pycharm下載庫時出現(xiàn)Failed to install package的問題

    很多小伙伴遇到pycharm下載庫時出現(xiàn)Failed to install package不知道怎么解決,下面小編給大家?guī)砹私鉀Q方法,需要的朋友參考下吧
    2021-09-09
  • 解決python3 Pycharm上連接數(shù)據(jù)庫時報錯的問題

    解決python3 Pycharm上連接數(shù)據(jù)庫時報錯的問題

    今天小編就為大家分享一篇解決python3 Pycharm上連接數(shù)據(jù)庫時報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Pycharm導(dǎo)包失敗問題及解決

    Pycharm導(dǎo)包失敗問題及解決

    這篇文章主要介紹了Pycharm導(dǎo)包失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • django自帶的server 讓外網(wǎng)主機訪問方法

    django自帶的server 讓外網(wǎng)主機訪問方法

    今天小編就為大家分享一篇django自帶的server 讓外網(wǎng)主機訪問方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python隊列queue模塊詳解

    python隊列queue模塊詳解

    這篇文章主要為大家詳細介紹了python隊列queue模塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python 中檢查一個字符是否為數(shù)字的示例代碼

    Python 中檢查一個字符是否為數(shù)字的示例代碼

    本文詳細介紹了在 Python 中檢查一個字符是否為數(shù)字的幾種常用方法。我們介紹了使用 isdigit() 方法、isnumeric() 方法和正則表達式等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,需要的朋友可以參考下
    2023-06-06

最新評論