首先是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
接下來設計乙個場景將map
和reduce
這兩個函式都綜合的用上
現在給定乙個str
型別的數,例如』1234』,我們要求出其對應的每個元素相加後的和
首先定義個函式將字串轉化為數字列表:如』1234』->[1,2,3,4]
def
chartonum
(str):
return int(str)
接下來寫乙個函式計算這個數字列表裡面所有值的和:1+2+3+4
def
numtonumber
(x,y):
return x+y
接下來使用map
和reduce
完成這個場景
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...