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