400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > python > 【Python基礎(chǔ)知識(shí)】Python高階函數(shù)

【Python基礎(chǔ)知識(shí)】Python高階函數(shù)

  • 發(fā)布: python培訓(xùn)
  • 來(lái)源:python干貨資料
  • 2020-11-25 10:59:12
  • 閱讀()
  • 分享
  • 手機(jī)端入口
(3)map()函數(shù)

map()函數(shù)的語(yǔ)法格式如下:

map(func, seq)

map()函數(shù)中有兩個(gè)參數(shù),第一個(gè)參數(shù)是函數(shù)func,第二個(gè)參數(shù)是序列seq。map()是一個(gè)映射函數(shù),根據(jù)提供的函數(shù)對(duì)指定的序列做映射。map()函數(shù)是以序列seq中的每一項(xiàng)作為參數(shù)依次調(diào)用函數(shù)func,返回包含每次函數(shù)func返回值的map對(duì)象。

map()函數(shù)的第一個(gè)參數(shù)函數(shù)func可以是內(nèi)建函數(shù),也可以是自定義函數(shù),甚至可以是匿名函數(shù);第二個(gè)參數(shù)序列seq可以是列表、元組、字符串等。

例如,map()函數(shù)的第一個(gè)參數(shù)是內(nèi)建函數(shù),第二個(gè)參數(shù)是列表:

  1. >>> alist = [1, -2, -3
  2. >>> print(list(map(abs, alist))) 
  3. [123

在上述程序中,abs是絕對(duì)值函數(shù)。由于map()函數(shù)的返回值是map對(duì)象,因此,使用list()方法將其轉(zhuǎn)換成列表。

例如,map()函數(shù)的第一個(gè)參數(shù)是自定義函數(shù),第二個(gè)參數(shù)是元組:

  1. >>> def f(x): 
  2. ...     return x ** 2 
  3. ... 
  4. >>> print(list(map(f, (24710)))) 
  5. [41649100

上述程序也可以改成匿名函數(shù)的形式:

  1. >>> print(list(map(lambda x: x ** 2, (24710)))) 
  2. [41649100

(4)filter()函數(shù)

filter()函數(shù)的語(yǔ)法格式如下:

filter(func, seq)

filter()是一個(gè)過(guò)濾器函數(shù),用于過(guò)濾掉序列中不符合條件的項(xiàng)。filter()函數(shù)以序列seq中的每一項(xiàng)作為參數(shù)依次調(diào)用函數(shù)func進(jìn)行判斷,函數(shù)func返回True或False,將返回值為T(mén)rue的項(xiàng)放進(jìn)filter對(duì)象中返回。

例如,過(guò)濾掉列表[7,10,13,16,17,19,21,22,26,28,29]中的奇數(shù)項(xiàng),只輸出偶數(shù)項(xiàng):

  1. >>> def fun(x): 
  2. ...     if x % 2 == 0
  3. ...         return x 
  4. ... 
  5. >>> alist = [710131617192122262829
  6. >>> print(list(filter(fun, alist))) 
  7. [1016222628

(5)reduce()函數(shù)

reduce()函數(shù)的語(yǔ)法格式如下:

reduce(func, seq[, init])

其中,init是一個(gè)可選參數(shù),表示初始值。注意,在使用reduce()函數(shù)前要導(dǎo)入from functools import reduce。

reduce()是一個(gè)累計(jì)函數(shù),其實(shí)現(xiàn)原理:如果存在init參數(shù),即有初始值,那么將初始值和序列seq的第1項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算,再將返回值與序列seq的第2項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算……這樣依次將返回值與序列seq的下一項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算,直到序列最后一項(xiàng)運(yùn)算完為止,返回最終的運(yùn)算結(jié)果。如果不存在init參數(shù),那么將序列seq的第1項(xiàng)和第2項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算,再將返回值與序列seq的第3項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算……這樣依次將返回值與序列seq的下一項(xiàng)作為參數(shù)傳值給函數(shù)func進(jìn)行運(yùn)算,直到序列最后一項(xiàng)運(yùn)算完為止,返回最終的運(yùn)算結(jié)果。

例如,初始值為100,對(duì)列表[1,2,3]使用reduce()函數(shù)進(jìn)行累乘:

  1. >>> from functools import reduce 
  2. >>> alist = [123
  3. >>> def fun(x,y): 
  4. ...     return x * y 
  5. ... 
  6. >>> print(reduce(fun, alist, 100)) 
  7. 600 

上述程序的功能等價(jià)于如下代碼:

  1. >>> alist = [1,2,3
  2. >>> num = 100 
  3. >>> sum = alist[0] * num 
  4. >>> for i in range(len(alist) -1): 
  5. ...     sum *=  alist[i+1
  6. ... 
  7. >>> print(sum) 
  8. 600 

 

文章“【Python基礎(chǔ)知識(shí)】Python高階函數(shù)”已幫助

>>本文地址:http://liujunjsxg.cn/zhuanye/2020/61386.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營(yíng)銷互聯(lián)網(wǎng)營(yíng)銷
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營(yíng)全域電商運(yùn)營(yíng)
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開(kāi)發(fā)智能機(jī)器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME