python 的map和reduce(高階函式)

2022-04-29 11:00:18 字數 1692 閱讀 3302

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

例如:

def

f(x):

return(x*x)

r=map(f,[1,2,3,4,5])

r #

是乙個迭代器

list(r) #

將r變成list

注意:如果是自定義函式,引數只能有乙個,否則會報錯,但如果是匿名函式lambda,則可以接受多個引數

def

f(x,y):

return(x+y)

r=map(f,([1,2,3,4,],[1,2,3,4]))

rlist(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']

配合lambda使用

map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])

#不輸出結果

配合lambda輸出是元組

map(lambda x, y : (x*y,x+y),[2,4,6],[3,2,1])  #

[3, 7, 11, 15, 19]

還有其他功能

#

1.當不傳入function時,map()就等同於zip(),將多個列表相同位置的元素歸併到乙個元組

map(none,[2,4,6],[3,2,1])

#結果[(2,3),(4,2),(6,1)]

#2.將元組轉換為list:

map(int,(1,2,3))

#3.將字串轉換為list:

map(int,'

1234')

#4.提取字典中的key,並將結果放在乙個list中:

map(int,)

map引數是字典dict是,記得,key是被替換的值,value是用來替換的值,這主要用於列名重新命名或者是值得重新賦值或者替換

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

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

from functools import

reduce

defadd(x,y):

return(x+y)

reduce(add,[1,2,3,4,5]) #

序列求和

from functools import

reduce

deffn(x,y):

return(x*10+y)

reduce(fn,[1,3,5,9]) #

1359 將[1,3,5,9]變成1359

python的map 和filter 函式

map 函式 map 函式,顧名思義,用於對映,把乙個序列的每乙個元素對映到函式中,然後返回乙個迭代物件。例如 def square x return x 2 print list map square,1,2,3 1,4,9 這裡注意要用list作轉換當然也可以用匿名函式lambda print ...

python的map和zip操作

如果要將乙個string list轉換成int list list裡每個string都轉成int 比如 python 0 1 2 0,1,2 可以使用 python int x for x in list 或者使用map操作 map func,list 對list裡的每個元素apply func.p...

python的map和reduce的區別

map 主要是對映,進行並行運算,而reduce 如其名,減少,歸納,map 函式有兩個引數 型別 第乙個引數是函式,第二個引數是乙個序列 從第二個起,可以有多個引數,根據第乙個引數函式接受的引數來定 reduc e函式有兩個引數,但是區別在於reduce 第乙個引數的函式必須接受兩個引數 話不多說...