日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

回顧

在Python進階記錄之基礎篇(十一)中,我們介紹了Python中迭代器與生成器的相關知識點,需要重點掌握迭代器與生成器的概念與基本用法。今天我們來講一下Python中的幾個高階函數。

Python中的高階函數

所謂高階函數,指的是至少滿足下列條件之一的函數:接收一個或多個函數作為輸入;輸出一個函數。簡單來說,高階函數就是一個接受函數作為輸入或輸出的函數。高階函數是函數式編程的一種。Python中內置的高階函數包括:map( )函數、reduce( )函數、filter( )函數和sorted( )函數。

map( )函數/reduce( )函數

MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(歸約)"是它們的主要思想,而這一思想正是借助了我們的map( )函數和reduce( )函數。

我們首先看一下map()函數。map( )函數接收兩個參數,第一個參數為函數,第二個參數為序列,功能是將傳入的函數依次作用于傳入序列的每個元素,并把結果作為新的列表返回。

假設現在有這樣一個需求:將列表[1, 2, 3, 4, 5, 6, 7, 8, 9]中的每個元素做平方運算。按之前所學的知識,我們可以使用for-in循環來實現這一需求。

Python中的高階函數

for-in循環實現

可以看到,使用for-in循環需要新建一個列表,并通過循環將原列表中的每個元素進行計算后新增到新列表中。現在我們使用map( )函數來實現這一需求。

Python中的高階函數

map()函數實現

map( )函數接受一個函數和序列,注意傳的是函數名,不要帶括號,map( )函數會自動將序列中的每個元素傳入函數,并返回經過函數處理后的結果。當然,map( )函數返回的是一個map對象,我們需要把它轉成列表才能得到最后的結果。map( )函數作為高階函數,事實上它只是把運算規則抽象化了,我們不僅可以做一些數學運算,還能對傳入的序列做很多其他非運算型操作。

Python中的高階函數

map()函數

上述代碼中,我們將str( )函數傳入map( )函數,就將原列表中的數字轉化成了字符串。此外,我們也可以使用匿名函數作為參數傳入map()函數。

接下來我們看一下reduce( )函數。與map()函數一樣,reduce( )函數也是接收兩個參數,第一個參數為函數,第二個參數為序列。區別在于,reduce( )函數接收的函數必須有兩個參數,reduce( )函數會把每次作用結果繼續和序列的下一個元素做累積計算。這樣看起來可能有點難以理解,我們用一個表達式來表示如下:

reduce(f, [x1, x2, x3, ... , xn]) = f(...f(f(x1, x2), x3), ... , xn)

舉一個簡單的例子,我們對一個序列做累加或累乘運算,就可以使用reduce()函數。

Python中的高階函數

reduce()進行累加和累乘

需要注意的是,Python3開始,reduce( )函數已經不在全局名字空間里了,我們需要通過引入functools模塊才能調用reduce( )函數。

filter( )函數

filter( )函數也是Python中內置的一個高階函數,主要用于過濾序列。filter( )函數同樣接收一個函數和一個序列,不同的是,filter( )函數接收的函數返回值必須是布爾值。filter( )函數將序列的每個元素作用于傳入的函數,然后根據返回值是True還是False決定是保留還是舍棄該元素。例如我們要取出一個序列中的所有偶數就可以使用filter( )函數。

Python中的高階函數

filter()函數

filter( )函數的功能與它的名字一樣,就是用于過濾與篩選。所以使用filter( )函數其實就是實現一個過濾篩選功能。

sorted( )函數

Python中還有一個內置的高階函數——sorted()函數。sorted( )函數的主要功能就是排序,從參數格式上與前面三個高階函數有所區別,sorted( )函數支持只接收一個序列。

Python中的高階函數

sorted()函數基本用法

上述代碼中sorted()函數默認是正序排序的,如果我們想要倒序排序,只需設置reverse=True即可。不難發現,sorted( )函數與我們之前介紹序列時序列內部的sort( )函數基本一樣。

Python中的高階函數

sorted()函數

以上代碼比較了sort( )函數和sorted( )函數的用法區別,takeSecond函數的功能是指定序列元素中元組的第二個元素做比較。事實上,序列內置的sort( )函數和全局高階函數sorted( )函數的功能都是排序,且傳參和用法都很相似。

總結

以上內容介紹了高階函數的基本概念與Python中的幾個高階函數。需要重點理解高階函數的特點,掌握map( )函數、reduce( )函數、filter( )函數和sorted( )函數的用法和主要用途。高階函數是函數式編程的重要工具,我們要不斷練習去理解掌握好它。感謝大家的支持與關注,歡迎一起學習交流~
 

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定