filter
python內建的filter()
函式用於過濾序列。
和map()
類似,filter()
也接收乙個函式和乙個序列。和map()
不同的時,filter()
把傳入的函式依次作用於每個元素,然後根據返回值是true
還是false
決定保留還是丟棄該元素。
例如,在乙個list中,刪掉偶數,只保留奇數,可以這麼寫:
def is_odd(n):
return n % 2 == 1
filter(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()
這個高階函式,關鍵在於正確實現乙個「篩選」函式。 函式式程式設計(1) 高階變成(3) sorted
sorted排序也是在程式中經常用到的演算法。無論使用氣泡排序還是快速排序,排序的核心是比較兩個元素的大小。如果是數字,我們可以直接比較,但如果是字串或者兩個dict呢?直接比較數學上的大小是沒有意義的,因此,比較的過程必須通過函式抽象出來。通常規定,對於兩個元素x和y,如果認為x y,則返回 1,...
函式式程式設計(2) 高階函式
1 什麼是程式設計正規化 2 程式設計函式與數學函式的關係。上篇文章介紹了函式式程式設計屬於宣告式程式設計正規化中的一種,它仿照數學概念中的公式演算去解決問題,是一種更接近數學語言的程式設計方式。並且我們知道函式式程式設計中所有的函式都是 純函式 pure function 因為只有純函式才符合數學...
函式式程式設計(2) 高階函式
1 什麼是程式設計正規化 2 程式設計函式與數學函式的關係。上篇文章介紹了函式式程式設計屬於宣告式程式設計正規化中的一種,它仿照數學概念中的公式演算去解決問題,是一種更接近數學語言的程式設計方式。並且我們知道函式式程式設計中所有的函式都是 純函式 pure function 因為只有純函式才符合數學...