關於 reduce 和 map

一  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 能夠處理這類數據類型

相關文章
相關標籤/搜索