一 reduce() 函數 是python 的 模塊的內容,是關於累 的 計算python
在調用的時候先導入reduce模塊app
reduce() 接收的參數有兩個,reduce(function,sequence)函數
reduce() 對 sequence (序列) 中的每個元素反覆調用function,並返回最終結果spa
from functools import reduce def func(a,b): return a+ b ret = reduce(func,[1,2,3,4,5]) print(ret)
ret = reduce(lambda x ,y:x+y,[1,2,3,4,5]) print(ret)
s = sum([1,2,3,4,5])
print(s)
# 結果是 15
上述計算其實是對 list 的全部元素求和,雖然 python 內置了求和函數 sum,code
可是利用 reduce()也很簡單blog
reduce() 還能夠接受第3個參數,做爲計算的初始值,若是把初始值設置成100,計算:it
from functools import reduce def func(a,b): return a+ b ret = reduce(func,[1,2,3,4,5],100) print(ret) # 結果就是 115
二 map()函數 是 python 內置的高階函數,map(func,iter1)io
它接收一個函數func 和 一個 list,並經過把函數func 依次做用在 list 的每個元素上function
獲得一個新的list 並返回class
例如: 對於list[1,2,3,4,5,6,7,8,9]
若是 但願把 list 的每個元素都做 平方,就能夠用函數 map()
所以,咱們只須要傳入 函數 f(x) = x * x ,就能夠利用 map()函數完成這個計算
lst = [1,2,3,4,5,6,7,8,9] # 1.能夠用函數方法實現 def func(x): return x * x ret = list(map(func,lst)) print(ret) # 2.能夠用 lambda 函數實現 ret = list(map(lambda x:x**2,lst)) print(ret) #3. for 循環也能夠作到 lst_new = [] for i in lst: lst_new.append(i *i) print(lst_new)
# 輸出結果清一色的: [1, 4, 9, 16, 25, 36, 49, 64, 81]
注意: map() 函數不改變原有的list,而是返回一個新的 list
利用 map()函數,能夠把一個 list 轉換爲 另一個 list,只須要傳入轉換函數
因爲 list 包含的元素能夠是 任何類型,所以,map() 不單單能夠處理只包含數值的list
事實上它能夠處理包含任意類型的list,只須要傳入的 func 能夠處理這類數據類型