上一節中學習了reduce函數,後來又遇見了map()和filter()函數,我認爲這三個函數應該放在一起。它們有一個共同點就是都通過一種操作方式作用一個數據集。
如上一節的reduce函數:
list = [1,2,3,4,5]
print reduce(lambda x,y:x+y,list)
它通過二元操作方法x+y即求和方法作用於後面的數據集list。
同理,map函數更加簡單:
def f(x):
return x**2
map(f,[1,2,3,4,5])
或者:
map(str, [1,2,3,4,5])
顯而易見,map就是將一種映射方式作用於後面的數據集,第一個例子是將1,2,3,4,5映射爲其平方輸出,第二個例子是將int映射成string輸出。
filter函數顧名思義是一個過濾器,將數據集元素輸入作用方法後返回True的元素,例如返回十以內的偶數:
def f(x):
if x%2 == 0:
return True
filter(f, [1,2,3,4,5,6,7,8,9])
上述filter就返回了數據集中可以被2整除的元素。
reduce、map和filter使用方式相同,重點在於構造作用方式和明確數據集。