python之有用的3個內置函數(filter/map/reduce)
阿新 • • 發佈:2018-07-16
得到 fun func 一個 == reduce 語法 too map
這三個內置函數還是非常有用的,在工作中用的還不少,順手,下面一一進行介紹
1、filter
語法:filter(function,iterable)
解釋:把叠代器通過function函數進行過濾出想要的數據
用法:可以設置一個叠代器,然後把相同屬性的元素過濾出來,如下所示
list1 = [1,2,3,4,5,6,7,8,9,10] listTemp = filter(lambda x:x%2==0,list1)
上面的意思是過濾出偶數(即被2整除的數),其中使用了匿名函數lambda,非常簡便,當然我們也可以自己頂一個函數來實現
另外在python2.*版本中是直接返回list的,但在python3.*中是返回一個叠代器
2、map
語法:map(function,*iterable)
解釋:把叠代器(或多個叠代器)通過function函數得到結果
用法:可以設置一個或多個叠代器,然後把相同位置(如果為多個叠代器)的元素通過function函數得到最終結果,如下所示:
#一個叠代器 list1 = [1,2,3,4,5,6,7,8,9] listTemp = map(lambda x:x*x,list1) #多個叠代器 list2 = [11,12,13] list3 = [21,22,23,24,25] listTemp = map(lambda x,y,z:x+y+z,list1,list2,list3)
多個叠代器的時候,是對後面所有的叠代器進行處理(lambda函數的參數個數必須和後面叠代器的個數一致),這裏我們又使用了匿名函數lambda
同filter一樣,在python2.*版本中是直接返回list的,但在python3.*中是返回一個叠代器
3、reduce
語法:reduce(function,iterable)
解釋:把叠代器通過function進行累積計算
用法:function必須包含倆個參數,第一個參數表示初始值,第二個參數表示叠代器的每個元素,如下:
list1 = [1,2,3,4,5] listTemp = reduce(lambda x,y:x+y*y,list1) print(listTemp)
通過print可以看出使用的是python3.*,這裏要註意的是,reduce函數在3.*版本裏面已經移動到functools裏面
這裏我們再次使用了lambda匿名函數,非常好用,函數式意思是把list1中的元素自乘之後再相加
python之有用的3個內置函數(filter/map/reduce)