標籤:列表 過濾 python2 obj span 返回結果 map red 通過
到時再記錄
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 + yprint(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(函數)