Python 中 map和reduce 的用法

2021-08-04 14:17:11 字數 1701 閱讀 8708

首先是map:接受兩個引數,第乙個是函式,第二個是乙個可迭代的的引數(iterable)

如下例子,我們定義乙個函式f(x)=x^2

#map的用法

deffunc

(x):

return x*x

m=map(func,range(1,8))

print(list(m))

#輸出 [1, 4, 9, 16, 25, 36, 49]

這段**的意思就是將1到7一次傳入到函式func,返回值存在迭代器(iterator)中,再轉化為list輸出。

我們再來看看傳入多個(iterable)引數

def

func

(x,y):

return x+y

m=map(func,range(1,8),range(3,6))

print(list(m))

#輸出結果:4(1+3),6(2+4),8(3+5)

可見,如果傳入的是多個iterator,則按照元素最少的為準

再來看看reduce的用法。

reduce接受兩個引數,第乙個引數是乙個函式,第二個引數是乙個可以迭代的型別(iterable)

第乙個引數的函式也必須接受兩個引數,reduce會把函式的返回值與序列的寫乙個元素繼續傳入函式做計算。

如下例子,求從1加到100的值

#reduce 將函式的到的結果繼續當做引數傳入到函式中去

from functools import reduce

defadd

(x,y):

return x+y

print(reduce(add,range(100)))

#輸出結果:4950

接下來設計乙個場景將mapreduce這兩個函式都綜合的用上

現在給定乙個str型別的數,例如』1234』,我們要求出其對應的每個元素相加後的和

首先定義個函式將字串轉化為數字列表:如』1234』->[1,2,3,4]

def

chartonum

(str):

return int(str)

接下來寫乙個函式計算這個數字列表裡面所有值的和:1+2+3+4

def

numtonumber

(x,y):

return x+y

接下來使用mapreduce完成這個場景

def

chartonumber

(s):

defchartonum

(str):

return int(str)

defnumtonumber

(x,y):

return x+y

return reduce(numtonumber,list(map(chartonum,s)))

print(chartonumber('345789'))

#輸出結果:36

Python中map和reduce函式

從引數方面來講 map 函式 map 包含兩個引數,第乙個是引數是乙個函式,第二個是序列 列表或元組 其中,函式 即map的第乙個引數位置的函式 可以接收乙個或多個引數。reduce 函式 reduce 第乙個引數是函式,第二個是 序列 列表或元組 但是,其函式必須接收兩個引數。從對傳進去的數值作用...

Python中map和reduce函式??

從引數方面來講 map 函式 map 包含兩個引數,第乙個是引數是乙個函式,第二個是序列 列表或元組 其中,函式 即map的第乙個引數位置的函式 可以接收乙個或多個引數。reduce 函式 reduce 第乙個引數是函式,第二個是 序列 列表或元組 但是,其函式必須接收兩個引數。從對傳進去的數值作用...

python中map和zip的用法

1,map 是python的乙個內建函式,它接收乙個函式和乙個可迭代物件 如列表 作為引數,用函式處理每個元素,然後返回新的列表。l1 1 2 3 4 5 print map int,l1 輸出 1,2,3,4,5 print map lambda x int x 2,l1 輸出 2,4,5,8,1...