python進階(小白也能看懂)——Map、Filter、Reduce
第三篇
Map、Filter、Reduce是python中常用的函數,使用這些函數能夠給我們帶來很多便捷。
Map
map(function_to_apply, list_of_inputs)
第一個參數是工具函數
(工具函數是我自己起的名,因爲這個函數就像一個工具一樣,用來處理我們的數據),第二個參數是列表,map的作用就是將工具函數
逐個地應用在列表中的元素上,並返回工具函數
處理後的列表。
看個例子就清楚了:
# 先定義工具函
def multiply_by_to(item):
return item*2
# 因爲map返回的是迭代器,所以需要轉換爲列表類型
print(list(map(multiply_by_to, [1,2,3]))
輸出結果
[2,4,6]
如果不知道什麼是迭代器,參考我的上一篇文章python進階(小白也能看懂)——生成器與迭代器
Reduce
reduce的用法與map類似,都需要傳入一個工具函數
和一個列表,但是reduce的作用卻與map相反。reduce在迭代序列的過程中,先將序列的前兩個元素給工具函數
處理,然後將處理的結果和序列的第三個元素給工具函數
處理,依此類推,直至序列最後一個元素。
我們可以使用reduce函數計算5的階乘。
from functools import reduce
def multiply_x_y(x,y):
return x*y
print(reduce(multiply_x_y,[1,2,3,4,5]))
輸出結果
120
Filter
filter的用法與map和reduce相同,但filter的作用是篩選元素,返回新的列表。見例子:
篩選出大於0的元素
def greater_than_zero(item):
return item>0
print(list(filter(greater_than_zero, range(-5,5))))
輸出結果
[1,2,3,4]