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