1. 程式人生 > 實用技巧 >python 的map和reduce(高階函式)

python 的map和reduce(高階函式)

一、map()

map()函式接受兩個引數,一個是函式(f),一個是可迭代物件iterable ,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的迭代器iterator返回

例如:

def f(x):
    return(x*x)

r=map(f,[1,2,3,4,5])
r  #是一個迭代器
list(r)  #將r變成list 

注意:引數中的f中含有2個引數會報錯

def f(x,y):
    return(x+y)
    
r=map(f,([1,2,3,4,],[1,2,3,4]))
r
list(r)  #報錯

要記住map將傳入的函式依次作用到序列的每個元素,是每個元素,這樣可以做很多事情

#可以簡單地將list所有數字轉為str
list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))  #['1', '2', '3', '4', '5', '6', '7', '8', '9']

二、reduce()

reduce()函式接受兩個引數,一個是函式(f必須接受兩個引數),一個是可迭代物件iterable,reduce把前面2個元素作用於f,得到的結果再與下一個元素作用於f,直到最後一個元素

reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)

from functools import reduce 
def
add(x,y): return(x+y) reduce(add,[1,2,3,4,5]) #序列求和 from functools import reduce def fn(x,y): return(x*10+y) reduce(fn,[1,3,5,9]) #1359 將[1,3,5,9]變成1359