Python內建的filter()函數,用於從一個序列中篩出符合條件的元素
filter()的做用是。因爲filter()使用了惰性計算,因此只有在取filter()結果的時候,纔會真正篩選並每次返回下一個篩出的元素
filter()函數返回的是一個Iterator,也就是一個惰性序列,因此要強迫filter()完成計算結果,須要用list()函數得到全部結果並返回list函數
filter()與map()比較
相同點:都是接收一個函數和一個序列
不一樣點:filter()把傳入的函數依次做用於每一個元素,而後根據返回值是True仍是False決定保留仍是丟棄該元素
filter()函數的做用在於篩選,只返回符合條件的list元素,即list的元素個數在filter先後會有變化
map()函數的做用在於將list每一個元素傳入函數進行處理spa
使用示例code
刪掉list中的偶數,只保留奇數blog
def is_odd(n): return n % 2 == 1 print(list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))) #輸出: [1, 5, 9, 15]
把一個序列中的空字符串刪掉ip
def not_empty(s): return s and s.strip() print(list(filter(not_empty, ['A', '', 'B', None, 'C', ' '])))# 輸出: ['A', 'B', 'C']