Python函數(shù)式和Ruby的相關(guān)技術(shù)比較
Python函數(shù)式在平時的使用中有很多有意思的事情。下面我們就詳細(xì)的看看Python函數(shù)式和Ruby之間的技術(shù)比較。下面我們就來看看如何進(jìn)行應(yīng)用。希望大家有所收獲。
Python函數(shù)式編程到底有什么用呢? 我想實際的好處就是可以將更好的描述問題本身,而不是描述解決問題的操作步驟。看一個具體的例子:
問題:一個列表;對每一個元素平方;將平方后的數(shù)如果除3的余數(shù)為1則從列表中除去。
看解決的方法:
1. 傳統(tǒng)過程式(Python函數(shù)式)
- >>> s = [1,2,3]
- >>> d = []
- >>> for i in s:
- if i * i % 3 != 1:
- d.append(i * i)
- >>> d
- [9]
- >>>
2. 傳統(tǒng)函數(shù)式(Lisp)
- (remove-if (lambda (n) (= (mod n 3) 1))
- (mapcar (lambda (n) (* n n))
- '(1 2 3)))
可以看出,函數(shù)式的程序很好的對應(yīng)了我們所提問題的兩個步驟,分別用 mapcar, remove-if來實現(xiàn)。不過Lisp的程序確實不太好讀,我們用python 和 ruby 來改進(jìn)一下:
3. Python函數(shù)式:
- >>> filter(lambda n: n % 3 != 1, map(lambda n:n*n, [1,2,3]))
- [9]
4. Ruby 函數(shù)式:
- [1,2,3].map {|n| n * n}.reject{|n| n % 3 == 1}
- => [9]
經(jīng)過比較,ruby的最為簡潔,而且與問題描述對應(yīng)的最自然。以上就是對Python函數(shù)式的相關(guān)介紹。
【編輯推薦】