IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
map()函數(shù)的語法格式如下:
map(func, seq)
map()函數(shù)中有兩個參數(shù),第一個參數(shù)是函數(shù)func,第二個參數(shù)是序列seq。map()是一個映射函數(shù),根據(jù)提供的函數(shù)對指定的序列做映射。map()函數(shù)是以序列seq中的每一項(xiàng)作為參數(shù)依次調(diào)用函數(shù)func,返回包含每次函數(shù)func返回值的map對象。
map()函數(shù)的第一個參數(shù)函數(shù)func可以是內(nèi)建函數(shù),也可以是自定義函數(shù),甚至可以是匿名函數(shù);第二個參數(shù)序列seq可以是列表、元組、字符串等。
例如,map()函數(shù)的第一個參數(shù)是內(nèi)建函數(shù),第二個參數(shù)是列表:
- >>> alist = [1, -2, -3]
- >>> print(list(map(abs, alist)))
- [1, 2, 3]
在上述程序中,abs是絕對值函數(shù)。由于map()函數(shù)的返回值是map對象,因此,使用list()方法將其轉(zhuǎn)換成列表。
例如,map()函數(shù)的第一個參數(shù)是自定義函數(shù),第二個參數(shù)是元組:
- >>> def f(x):
- ... return x ** 2
- ...
- >>> print(list(map(f, (2, 4, 7, 10))))
- [4, 16, 49, 100]
上述程序也可以改成匿名函數(shù)的形式:
- >>> print(list(map(lambda x: x ** 2, (2, 4, 7, 10))))
- [4, 16, 49, 100]
(4)filter()函數(shù)
filter()函數(shù)的語法格式如下:
filter(func, seq)
filter()是一個過濾器函數(shù),用于過濾掉序列中不符合條件的項(xiàng)。filter()函數(shù)以序列seq中的每一項(xiàng)作為參數(shù)依次調(diào)用函數(shù)func進(jìn)行判斷,函數(shù)func返回True或False,將返回值為True的項(xiàng)放進(jìn)filter對象中返回。
例如,過濾掉列表[7,10,13,16,17,19,21,22,26,28,29]中的奇數(shù)項(xiàng),只輸出偶數(shù)項(xiàng):
- >>> def fun(x):
- ... if x % 2 == 0:
- ... return x
- ...
- >>> alist = [7, 10, 13, 16, 17, 19, 21, 22, 26, 28, 29]
- >>> print(list(filter(fun, alist)))
- [10, 16, 22, 26, 28]
(5)reduce()函數(shù)
reduce()函數(shù)的語法格式如下:
reduce(func, seq[, init])
其中,init是一個可選參數(shù),表示初始值。注意,在使用reduce()函數(shù)前要導(dǎo)入from functools import reduce。
reduce()是一個累計(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,對列表[1,2,3]使用reduce()函數(shù)進(jìn)行累乘:
- >>> from functools import reduce
- >>> alist = [1, 2, 3]
- >>> def fun(x,y):
- ... return x * y
- ...
- >>> print(reduce(fun, alist, 100))
- 600
上述程序的功能等價(jià)于如下代碼:
- >>> alist = [1,2,3]
- >>> num = 100
- >>> sum = alist[0] * num
- >>> for i in range(len(alist) -1):
- ... sum *= alist[i+1]
- ...
- >>> print(sum)
- 600
>>本文地址:http://uj2y2uok.com/zhuanye/2020/61386.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?