map()函數的語法格式如下:
map(func, seq)
map()函數中有兩個參數,第一個參數是函數func,第二個參數是序列seq。map()是一個映射函數,根據提供的函數對指定的序列做映射。map()函數是以序列seq中的每一項作為參數依次調用函數func,返回包含每次函數func返回值的map對象。
map()函數的第一個參數函數func可以是內建函數,也可以是自定義函數,甚至可以是匿名函數;第二個參數序列seq可以是列表、元組、字符串等。
例如,map()函數的第一個參數是內建函數,第二個參數是列表:
- >>> alist = [1, -2, -3]
- >>> print(list(map(abs, alist)))
- [1, 2, 3]
在上述程序中,abs是絕對值函數。由于map()函數的返回值是map對象,因此,使用list()方法將其轉換成列表。
例如,map()函數的第一個參數是自定義函數,第二個參數是元組:
- >>> def f(x):
- ... return x ** 2
- ...
- >>> print(list(map(f, (2, 4, 7, 10))))
- [4, 16, 49, 100]
上述程序也可以改成匿名函數的形式:
- >>> print(list(map(lambda x: x ** 2, (2, 4, 7, 10))))
- [4, 16, 49, 100]
(4)filter()函數
filter()函數的語法格式如下:
filter(func, seq)
filter()是一個過濾器函數,用于過濾掉序列中不符合條件的項。filter()函數以序列seq中的每一項作為參數依次調用函數func進行判斷,函數func返回True或False,將返回值為True的項放進filter對象中返回。
例如,過濾掉列表[7,10,13,16,17,19,21,22,26,28,29]中的奇數項,只輸出偶數項:
- >>> 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()函數
reduce()函數的語法格式如下:
reduce(func, seq[, init])
其中,init是一個可選參數,表示初始值。注意,在使用reduce()函數前要導入from functools import reduce。
reduce()是一個累計函數,其實現(xiàn)原理:如果存在init參數,即有初始值,那么將初始值和序列seq的第1項作為參數傳值給函數func進行運算,再將返回值與序列seq的第2項作為參數傳值給函數func進行運算……這樣依次將返回值與序列seq的下一項作為參數傳值給函數func進行運算,直到序列最后一項運算完為止,返回最終的運算結果。如果不存在init參數,那么將序列seq的第1項和第2項作為參數傳值給函數func進行運算,再將返回值與序列seq的第3項作為參數傳值給函數func進行運算……這樣依次將返回值與序列seq的下一項作為參數傳值給函數func進行運算,直到序列最后一項運算完為止,返回最終的運算結果。
例如,初始值為100,對列表[1,2,3]使用reduce()函數進行累乘:
- >>> from functools import reduce
- >>> alist = [1, 2, 3]
- >>> def fun(x,y):
- ... return x * y
- ...
- >>> print(reduce(fun, alist, 100))
- 600
上述程序的功能等價于如下代碼:
- >>> 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://hqfphsz.com/zhuanye/2020/61386.html
聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?