python學習之五(map,filter,reduce函式的使用)
阿新 • • 發佈:2018-11-09
map函式
我們首先使用原始的方法定義幾個功能函式來實現數字的加,減,平方運算。程式碼如下所示:
def add(x):
return x+1
def reduce(x):
return x-1
def pf(x):
return x**2
num_1=[1,2,5,9]
def map_test(func,array):
ret=[]
for i in array:
res=func(i)
ret.append(res)
return ret
原始的方法比較麻煩。下面來看使用map函式方法(使用了lambda表示式比較方便簡單):
num_1=[1,2,5,9]
res=map(lambda x:x+1,num_1)
print('內建函式處理結果:')
print(list(res))
輸出結果:
再來看一個小寫轉大寫的map方法:
msg='qwerqwer' print(list(map(lambda x:x.upper(),msg)))
filter函式
#按照以前的思維用迴圈來寫一個過濾器,有侷限性 # animial=['ab_cat','ab_tager','dog_ab','cow_ab'] # # def ab(n): # return n.endswith('ab') # # # def filter_test(func,array): # ret=[] # for i in array: # if not func(i): # ret.append(i) # return ret # print(filter_test(ab,animial)) # # #filter函式 # animial=['ab_cat','ab_tager','dog_ab','cow_ab','fly'] # #保留filter中含有的元素 # print(list(filter(lambda n:n.endswith('ab'),animial))) # #保留filter中不含有的元素 # print(list(filter(lambda n:not n.endswith('ab'),animial)))
reduce函式
# num_1=[9,2,4,5,6,7,3] # #第一種形式 # sum=0 # for num in num_1: # sum+=num # print(sum) #第二中形式 # def multi(x,y): # return x*y # def reduce_test(func1,array): # sum=array.pop(0) # for i in array: # sum=func1(sum,i) # return sum # print(reduce_test(lambda x,y:x*y,num_1)) # #reduce函式的功能 # from functools import reduce # #最後的2是給功能指定初始的值,也可以不指定初始的值 # print(reduce(lambda x,y:x+y,num_1,2))