Python內(nèi)建的filter()函數(shù)用于過(guò)濾序列。
和map()類似,filter()也接收一個(gè)函數(shù)和一個(gè)序列。和map()不同的時(shí),filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。
例如,在一個(gè)list中,刪掉偶數(shù),只保留奇數(shù),可以這么寫:
def is_odd(n): return n % 2 == 1filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])# 結(jié)果: [1, 5, 9, 15]
把一個(gè)序列中的空字符串刪掉,可以這么寫:
def not_empty(s): return s and s.strip()filter(not_empty, ['A', '', 'B', None, 'C', ' '])# 結(jié)果: ['A', 'B', 'C']
可見(jiàn)用filter()這個(gè)高階函數(shù),關(guān)鍵在于正確實(shí)現(xiàn)一個(gè)“篩選”函數(shù)。
練習(xí)
請(qǐng)嘗試用filter()刪除1~100的素?cái)?shù)。
新聞熱點(diǎn)
疑難解答
圖片精選