python中的map、filter、reduce函数
三個(gè)函數(shù)比較類(lèi)似,都是應(yīng)用于序列的內(nèi)置函數(shù)。常見(jiàn)的序列包括list、tuple、str。
1、map函數(shù)
map函數(shù)會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
map函數(shù)的定義:
map(function,sequence[,sequence,...]) ->list
?通過(guò)定義可以看到,這個(gè)函數(shù)的第一個(gè)參數(shù)是一個(gè)函數(shù),剩下的參數(shù)是一個(gè)或多個(gè)序列,返回值是一個(gè)集合。
function可以理解為是一個(gè)一對(duì)一或多對(duì)一的函數(shù),map的作用是以參數(shù)序列中的每一個(gè)元素調(diào)用function函數(shù),返回包含每次function函數(shù)返回值的list。
比如要對(duì)一個(gè)序列中的每個(gè)元素進(jìn)行平方運(yùn)算:
返回結(jié)果為:
在參數(shù)存在多個(gè)序列時(shí),會(huì)依次以每個(gè)序列中相同位置的元素做參數(shù)調(diào)用function函數(shù)
比如要對(duì)兩個(gè)序列中的元素依次求和:
map返回的list中的第一個(gè)元素為1,加參數(shù)序列2中的第一個(gè)元素為2,即(1+2)
map返回的list中的第二個(gè)元素為3,加參數(shù)序列2中的第二個(gè)元素為4,即(3+4)
以此類(lèi)推,最后的返回結(jié)果為:
要注意function函數(shù)的參數(shù)數(shù)量,要和map中提供的集合數(shù)量相匹配。
如果集合長(zhǎng)度不相等,會(huì)以最小長(zhǎng)度對(duì)所有集合進(jìn)行截取。
?
2、filter函數(shù)
filter函數(shù)會(huì)對(duì)指定序列執(zhí)行過(guò)濾操作。
filter函數(shù)的定義:
filter(function or None,sequence) ->list,tuple or string
function是一個(gè)謂詞函數(shù),接受一個(gè)參數(shù),返回布爾值True或False。
filter函數(shù)會(huì)對(duì)序列參數(shù)sequence中的每個(gè)元素調(diào)用function函數(shù),最后返回的結(jié)果包含調(diào)用結(jié)果為T(mén)rue的元素。
返回值的類(lèi)型和參數(shù)sequence類(lèi)型相同。
篩選list列表中以ex結(jié)尾的元素:
打印結(jié)果:
['alex']
?
3、reduce函數(shù)
reduce函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。
定義:
reduce(function,sequence[,initial]) ->value
function參數(shù)是一個(gè)有兩個(gè)參數(shù)的函數(shù),reduce依次從sequence中取一個(gè)元素,和上一次調(diào)用function的結(jié)果做參數(shù)再次調(diào)用function。
第一次調(diào)用function時(shí),如果提供initial參數(shù),會(huì)以sequence中的第一個(gè)元素和initial參數(shù),會(huì)以sequence中的第一個(gè)元素和initial作為參數(shù)調(diào)用function,否則會(huì)以序列sequence中的前兩個(gè)元素做參數(shù)調(diào)用function。
求數(shù)列中元素的和:
打印結(jié)果:
15
?
轉(zhuǎn)載于:https://www.cnblogs.com/LYliangying/p/6227019.html
總結(jié)
以上是生活随笔為你收集整理的python中的map、filter、reduce函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JQuery------实现鼠标摁下抬起
- 下一篇: Python中的eval()、exec(