python學習之路03(函數)
阿新 • • 發佈:2018-04-15
map() 結果 span enc return turn 導入 通過 func
到時再記錄
3.內置函數-高階函數
1.filter(func,sequence)接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新叠代器(在python3中),(在python2中就返回一個list)
li = [‘a‘,‘b‘,‘c‘] def f(s): # 定義一個過濾函數 if s != ‘a‘: return s re = filter(f,li) # 使用filter函數將列表中的值分別傳入函數中,不符合條件的就過濾,返回是一個叠代器print(re) for i in re: # 叠代器通過for循環讀取 print(i)
print(list(re)) # 將叠代器強制轉換為list
<filter object at 0x00000000006E03C8> b c
2.map(func,sequence)接收一個函數 f 和一個 list,並通過把函數 f 依次作用在 list 的每個元素上,返回一個新叠代器(在python3中),(在python2中就返回一個list)
li = [‘a‘,‘b‘,‘c‘] def f(s): # 定義一個函數 return s + "zengwenhai" re = map(f,li) # 使用map函數將列表中的值分別傳入函數中,對列表中的每個值進行處理 print(re) for i in re: # 叠代器通過for循環讀取 print(i)
print(list(re)) # 將叠代器強制轉換為list
<map object at 0x00000000007A0470> azengwenhai bzengwenhai czengwenhai
3.reduce()函數接收的參數和 map()類似,一個函數 f,一個list,但行為和 map()不同,reduce()傳入的函數 f 必須接收兩個參數,reduce()對list的每個元素反復調用函數f,並返回最終結果值
from functools import reduce # 在python中需要導入 def add(x,y): return x + y print(reduce(add,[1,3,5,7,9])) # reduce函數將列表中的值分別傳入函數中,處理後放入列表中,再次傳入值 # 先計算頭兩個元素:f(1, 3),結果為4; # 再把結果和第3個元素計算:f(4, 5),結果為9; # 再把結果和第4個元素計算:f(9, 7),結果為16; # 再把結果和第5個元素計算:f(16, 9),結果為25; # 由於沒有更多的元素了,計算結束,返回結果25。 25
python學習之路03(函數)