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會報錯: 這報錯的意思就是 返回的是位址而不是資料 , filter物件 需要 轉換為 list物件 才能輸出。is_odd(n):
return n % 2 == 1newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
另外,如果 判斷函式 是 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...