檢視上一節:初識高階函數
過濾器filter函數
首先打開
官網,找到
Library Reference,點選打開:

找到
build in Functions:
在這裡面找到
filter()filter就是一個過濾器的意思。filter()可以從序列中過濾出符合條件的元素,儲存到一個新的序列中。
參數:
1.函數,根據該函數來過濾序列(可疊代的結構)
2.需要過濾的序列(可疊代的結構)
傳回值:
過濾後的新序列(可疊代的結構)
變換上節課的示例:
# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]
# 這個函數可以将3的倍數取出
def fn4(i):
if i % 3 == 0 :
return True
return False
def fn(func , lst) :# 定義高階函數fn
# 建立一個新清單
new_list = []
# 對清單進行篩選
for n in lst :
new_list.append(n)
# 傳回新清單
return new_list
print(list(filter(fn4 , l)))
執行結果為:
可以看到此時列印的結果還是3的倍數。
總結:
fn4是作為參數傳遞進filter()函數中, 而fn4實際上隻有一個作用,就是作為filter()的參數,filter()調用完畢以後,fn4就已經沒用了。
lambda函數
但是這樣并不推薦使用,接下來介紹一種新的函數:匿名函數(也叫 lambda )(文法糖)
lambda函數表達式專門用來建立一些簡單的函數,他是函數建立的又一種方式。
文法:lambda 參數清單 : 傳回值
匿名函數一般都是作為參數使用,其他地方一般不會使用。用于簡單的函數,複雜的不建議使用。
計算兩數之和:
print((lambda a,b:a+b)(10,20))
一般是不這麼使用的,這裡隻是介紹一下lambda函數的用法。
還有一種用法,可以将匿名函數指派給一個變量:
# 3的倍數
r=filter(lambda i : i % 3==0,l)
print(r)
而且在這裡隻需要調整lambda裡面的傳回值内容即可,不需要另外建構函數。
map函數
可周遊可疊代對象的所有元素做指定的操作,然後将其添加到一個新的清單中傳回。
示例:将清單中的元素都加1
# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]
r=map(lambda i : i+1,l)
print(list(r))
執行結果為:
點選檢視配套視訊教程
擷取更多内容,請訂閱
Python學習站官方技術圈!