2016年9月30日 星期五

Python的匿名函式lambda

在Python中,一般的函式在使用前必須要先用def定義這個函式的內容,參考《簡單的Python函式》。但平常在用的時候,有時只是在程式碼內臨時需要一個函式而已,並不想要另外在外面多定義一個函式,這個時候就可以使用匿名函式,在Python裡面用lambda expression來完成此功能。

這邊用計算single strand DNA (ssDNA)序列 atgcatgcatgcatgcatgcatgcatgc 的分子量為例子,粗體是輸入的指令、Courier字型則是電腦給的回應

Step 1:啟動Python
$ python3.4
Python 3.4.4 (default, Mar  2 2016, 03:31:27) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Step 2:輸入序列,這邊輸入小寫,讓python用字串功能upper轉成大寫(使用方法參考《Python內建的字串處理功能》
>>> str='atgcatgcatgcatgcatgcatgcatgc'
>>> str=str.upper()
>>> str
'ATGCATGCATGCATGCATGCATGCATGC'

Step 3:用lambda expression來給一個函式,計算ssDNA的分子量,計算公式參考ThermoFisher的《DNA and RNA Molecular Weights and Conversions》
>>> mw = lambda An, Tn, Cn, Gn: (An * 313.2) + (Tn * 304.2) + (Cn * 289.2) + (Gn * 329.2) + 79.0
>>> mw(str.count('A'), str.count('T'), str.count('C'), str.count('G'))
8729.6

上面的str.count... 是計算字串裡面某個字元出現的個數,這邊可以知道這條ssDNA atgcatgcatgcatgcatgcatgcatgc 的分子量約莫是 8729 g/mol、約莫是8.7 kDa

_EOF_

沒有留言:

張貼留言