Python中filter篩選函式匿名引數問題

2021-08-02 03:18:02 字數 799 閱讀 5671

最近在學習python,覺得有個地方很有意思,稍作記錄,方便以後查閱。

python內建的filter()函式用於過濾序列。

簡單來講,就是針對乙個序列中的每個元素,呼叫乙個判別函式,根據函式返回的true和false(python中的bool型別必須嚴格為true和false),決定是否刪除這個元素。

有意思的地方正在於這個判別函式的入參。如果僅根據待篩選值即可確定是否過濾,那麼直接指定函式名即可,待篩選值會作為入參傳入該函式;如果篩選邏輯需要額外的引數,則使用lambda表示式返回匿名函式,作為判別函式使用。

先以乙個形參為例,即_filter(x):

1、如果呼叫時未傳入實參,則x為序列中帶判別值,例如:

def

is_odd

(n):

return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

執行後輸出為:[1, 5, 9, 15]

2、如果篩選邏輯需要額外的引數,則使用lambda表示式返回匿名函式,例如:

def

is_odd

(n):

return

lambda x: x % n == 1

n = 2

list(filter(is_odd(n), [1, 2, 4, 5, 6, 9, 10, 15]))

函式名也是一種變數,挺強大!

filter 篩選方法

obj models.student.objects 篩選age 33 gt stu obj.filter age lt 33 print stu 篩選age 33 gte stu obj.filter age lte 33 print stu 年齡包含33 12 stu obj.filter ag...

Python的filter方法實現篩選功能

filter方法可以實現篩選,第乙個引數是乙個函式,返回值是true或者 false,第二個引數可以是 str tuple list,將後面的引數依次傳遞給函式,依次判斷結果,留下結果為 true的。比如 d filter lambdax x 2,1,2,3,4 這個結果為1,3.執行過程 1 將列...

埃式素數篩選 filter

把廖雪峰 的描述稍微修改了一下 計算素數的乙個方法是埃式篩法,它的演算法理解起來非常簡單 首先,構造出乙個奇數序列 3,5,7,9,11,13,15,17,19,21,23,25.先返回2 取序列的第乙個數3,它一定是素數,返回3,然後用3把序列的3的倍數篩掉 5,7,11,13,17,19,23,...