更新時(shí)間:2022-08-04 來(lái)源:黑馬程序員 瀏覽量:
filter函數(shù)會(huì)對(duì)指定序列執(zhí)行過(guò)濾操作。
filter函數(shù)的定義如下:
filter(function, iterable)
在上述定義中,第一個(gè)參數(shù)function可以是函數(shù)名稱或者None,第二個(gè)參數(shù)iterable可以是序列、支持迭代的容器或迭代器。返回值為迭代器對(duì)象。其中,function函數(shù)只能接收一個(gè)參數(shù),而且該函數(shù)的返回值為布爾值。
filter函數(shù)的作用是以參數(shù)迭代器中的每個(gè)元素分別調(diào)用function函數(shù),最后返回的迭代器包含調(diào)用結(jié)果為T(mén)rue的元素。示例代碼如下:
func = lambda x:x % 2 result = filter(func, [1, 2, 3, 4, 5]) print(list(result))
上述示例中,定義了一個(gè)匿名函數(shù)func,返回某個(gè)數(shù)取余以后的結(jié)果,接著調(diào)用filter函數(shù)將[1,2,3,4,5]中的每個(gè)元素取出來(lái),作為func的參數(shù)調(diào)用func函數(shù),之后將結(jié)果轉(zhuǎn)換為列表的形式顯示。
程序輸出的結(jié)果為:
[1, 3, 5]
為了讓大家理解filter函數(shù)的作用,接下來(lái),通過(guò)一張圖來(lái)描述上述示例執(zhí)行的原理,如圖7-12所示。
圖7-12 filter函數(shù)原理圖
圖7-12分析了上述程序執(zhí)行的原理。由圖可知,程序把原始序列的元素執(zhí)行取余操作后,將不能被2整除(結(jié)果為T(mén)rue)的元素篩選出來(lái)構(gòu)成一個(gè)新的列表。