python3 對 filter 函式的淺研究

2022-08-30 16:21:20 字數 2474 閱讀 3376

filter()函式原型是

filter(function or none,sequence)

function or none  ——判斷函式,可填none

sequence      ——列表、序列,即可迭代物件

按書上的解釋是 返回序列中使得函式值為 true的那些元素,如果函式為 none ,則返回那些值等價於 true的那些元素。

如果序列為元組或字串則返回相同型別結果,其他則返回列表。

我自己的解釋是 如果序列中有符合判斷函式中返回為 true的元素,則返回該元素。如果判斷函式 為 none,則返回整個列表。

注意:需要 把該函式 轉換為 列表或是其它的型別才能輸出。

輸出的是

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
按 菜鳥教程 上的例子:

def

is_odd(n):

return n % 2 == 1newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print(newlist)

會報錯:

這報錯的意思就是 返回的是位址而不是資料 , filter物件 需要 轉換為 list物件 才能輸出。

另外,如果 判斷函式 是 none ,則返回整個列表:

def

iss(x):

return x % 2 == 1nlist = list(filter(none, range(1,101)))

print(nlist)

輸出的是

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
廖雪峰裡的解釋與例子如下:

-----鏈     接-----

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

map()類似,filter()也接收乙個函式和乙個序列。和map()不同的時,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。

例如,在乙個list中,刪掉偶數,只保留奇數,可以這麼寫:

def

is_odd(n):

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

#結果: [1, 5, 9, 15]

把乙個序列中的空字串刪掉,可以這麼寫:

def

not_empty(s):

return s and

s.strip()

filter(not_empty, ['a

', '', '

b', none, '

c', ''])

#結果: ['a', 'b', 'c']

可見用filter()這個高階函式,關鍵在於正確實現乙個「篩選」函式。

以上是本次的全部內容。

python3 map函式和filter函式詳解

map 函式可以對乙個資料進行同等迭代操作。例如 def f x return x x r map f,1,2,3,4,5,6,7,8,9 print list r map函式傳入的第乙個引數就是函式本身,即f。第二個引數是要操作的資料 map 作為高階函式,事實上它把運算規則抽象了,因此,我們不但...

再學python3 五 python的內建函式

內建函式 dir 檢視變數擁有的方法 callable 檢視是否是函式 help 檢視幫助 print dir int abs add print callable print true print help int 列印進度條 可用progress bar外掛程式做 import time for...

python3 對稱加密

aes demo import base64 from crypto.cipher import aes 採用aes對稱加密演算法 str不是16的倍數那就補足為16的倍數 def add to 16 value while len value 16 0 value 0 return str.enc...