最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

高階函數(shù)

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


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

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

傳入函數(shù)

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

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

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

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

map得到的結(jié)果是一個(gè)Iterator,所以要用list()函數(shù)讓整個(gè)序列變成一個(gè)list
list不是Iterator因?yàn)槭荹] , generator 是Iterator()
可以使用iter來(lái)將Iterable變成Iterator


本實(shí)例,實(shí)驗(yàn)了str

reduce用法

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

比如對(duì)一個(gè)序列求和

fliter

filter用于過(guò)濾序列,和map類(lèi)似,filter也接受一個(gè)函數(shù)和一個(gè)序列,和map不同的是,filter把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(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ù)開(kāi)始2個(gè)一取,str[::-2]從倒數(shù)第一個(gè)元素開(kāi)始,2個(gè)一取

Sorted

排序算法

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

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

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

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

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

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

要進(jìn)行反向排序,不必改動(dòng)key函數(shù),可以傳入第三個(gè)參數(shù)reverse=True:

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

map reduce filter sorted

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

相關(guān)文章

  • 如何使用virtualenv管理python環(huán)境

    如何使用virtualenv管理python環(huán)境

    這篇文章主要介紹了如何使用virtualenv管理python環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 解決python 讀取npy文件太大不能完全顯示的問(wèn)題

    解決python 讀取npy文件太大不能完全顯示的問(wèn)題

    這篇文章主要介紹了解決python 讀取npy文件太大不能完全顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 詳解Python列表解析式的使用方法

    詳解Python列表解析式的使用方法

    Python?是一種極其多樣化和強(qiáng)大的編程語(yǔ)言!當(dāng)需要解決一個(gè)問(wèn)題時(shí),它有著不同的方法。本文將將會(huì)展示列表解析式的使用方法,需要的可以參考一下
    2022-04-04
  • Python + OpenCV 實(shí)現(xiàn)LBP特征提取的示例代碼

    Python + OpenCV 實(shí)現(xiàn)LBP特征提取的示例代碼

    這篇文章主要介紹了Python + OpenCV 實(shí)現(xiàn)LBP特征提取的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python基于ID3思想的決策樹(shù)

    python基于ID3思想的決策樹(shù)

    這篇文章主要為大家詳細(xì)介紹了python基于ID3思想的決策樹(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 在Python中通過(guò)getattr獲取對(duì)象引用的方法

    在Python中通過(guò)getattr獲取對(duì)象引用的方法

    今天小編就為大家分享一篇在Python中通過(guò)getattr獲取對(duì)象引用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python語(yǔ)句中end=‘ ‘的作用及說(shuō)明

    python語(yǔ)句中end=‘ ‘的作用及說(shuō)明

    這篇文章主要介紹了python語(yǔ)句中end=‘ ‘的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Python中跨越多個(gè)文件使用全局變量的方法

    Python中跨越多個(gè)文件使用全局變量的方法

    全局變量是不屬于函數(shù)范圍的變量,可以在整個(gè)程序中使用,這表明全局變量也可以在函數(shù)體內(nèi)部或外部使用,這篇文章主要介紹了Python中跨越多個(gè)文件使用全局變量,需要的朋友可以參考下
    2023-09-09
  • Django實(shí)現(xiàn)將一個(gè)字典傳到前端顯示出來(lái)

    Django實(shí)現(xiàn)將一個(gè)字典傳到前端顯示出來(lái)

    這篇文章主要介紹了Django實(shí)現(xiàn)將一個(gè)字典傳到前端顯示出來(lái),具有很好的參考價(jià)值,希望
    2020-04-04
  • 關(guān)于Python中字典dict的存儲(chǔ)原理詳解

    關(guān)于Python中字典dict的存儲(chǔ)原理詳解

    Python字典是另一種可變?nèi)萜髂P?可存儲(chǔ)任意類(lèi)型對(duì)象。如字符串、數(shù)字、元組等其他容器模型,因?yàn)樽值涫菬o(wú)序的所以不支持索引和切片,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

呼图壁县| 伊宁市| 房山区| 雷州市| 龙海市| 安丘市| 方山县| 马尔康县| 新巴尔虎左旗| 徐闻县| 仪征市| 甘德县| 水城县| 新巴尔虎右旗| 彩票| 苍梧县| 南阳市| 宝清县| 马龙县| 中西区| 天津市| 调兵山市| 休宁县| 名山县| 澄城县| 昆山市| 广汉市| 辉县市| 仁布县| 贵阳市| 仲巴县| 普定县| 瑞金市| 亳州市| 南和县| 盐津县| 烟台市| 清徐县| 四川省| 阳高县| 河源市|