python--map()、reduce()
7708 ワード
map()とreduce()はビッグデータを処理する際の重要な考え方であり,普段でも利用できる.pythonにはこの2つの方法が内蔵されており,mapはマッピングの意味をとり,reduceは帰納の意味をとる.
一、map() map(func, lsd)
パラメータ1は関数パラメータ2はシーケンス機能:入力された関数をシーケンス内の各要素に順次作用させ、結果を新しいIteratorとして返す.注意:反復可能なオブジェクトは不活性なリストであり、直接アドレスとして出力されます.中身を表示する書き込みを出力するには、eg:print(list(res))
二、ruduce() reduce(func, lsd)
パラメータ1は関数パラメータ2はシーケンス
注意:reduceは導入する必要があります:from functools import reduce機能:1つの関数がシーケンスに作用し、この関数は2つのパラメータを受け入れなければならない.reduceは結果をシーケンスの次の要素と累積演算し続ける. eg:reduce(f,[a,b,c,d])は、f(f(f(a,b),c),d)----fに等価であり、2つのパラメータを受け入れる関数である.
三、総合
map、reduceはよく組み合わせて使用されますが、実用的かどうかにかかわらず、どのように使用するかを説明するための簡単な例があります.
一、map()
パラメータ1は関数パラメータ2はシーケンス
1 #
2
3 def char2int(chr):
4 return {'0':0, '1':1, '2':2, '3':3}[chr] #
5
6 lis = ['2','1','3','0']
7 res = map(char2int, lis) #
8 res2 = map(int, lis) #
9 print(res) # ,
10 print(list(res)) #
11 print(list(res2))
二、ruduce()
パラメータ1は関数パラメータ2はシーケンス
注意:reduceは導入する必要があります:from functools import reduce
1 #
2
3 from functools import reduce
4 #
5 def Sum(a,b):
6 return a + b
7 lis = [1,2,3,4,5]
8
9 res = reduce(Sum, lis) #
10 print(res) # reduce , map
三、総合
map、reduceはよく組み合わせて使用されますが、実用的かどうかにかかわらず、どのように使用するかを説明するための簡単な例があります.
1 #
2
3 from functools import reduce # reduce
4
5 def str2int(str):
6 # reduce , map ,
7 def fc(x,y):
8 return x * 10 + y
9 # ,
10 def fs(chr):
11 return {'0':0, '1':1, '2':2, '3':3,'4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[chr]
12 return reduce(fc, map(fs,list(str))) # map , reduce
13 res = str2int('2314233123')
14 print(res)