[Py012] 统计碱基数

有一段DNA序列s,统计四种碱基的个数

这个是Rosalind的第一题 http://rosalind.info/problems/dna/

常规处理方法,使用str.count()函数

In[9]: s='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
In[10]: def nt_stat(s):
   ...:     return s.count("A"), s.count("G"), s.count("C"), s.count("T")
   ...: 
In[11]: nt_stat(s)
Out[11]: (20, 17, 12, 21)

酷炫一点的处理方法,map 自动映射函数后再解包

In[12]: print(*map(s.count,'AGCT'))
20 17 12 21

# map处理后返回的是一个可迭代的map对象
In[14]: map(s.count,'AGCT')
Out[14]: 
In[15]: list(map(s.count,'AGCT'))
Out[15]: [20, 17, 12, 21]
    
# 其实和序列生成式大同小异
In[17]: [s.count(x) for x in 'AGCT']
Out[17]: [20, 17, 12, 21]

关于map 和解包的基础知识,可以见参考下面的链接

http://www.runoob.com/python/python-func-map.html

http://www.cnblogs.com/cnhkzyy/p/9410658.html

https://blog.csdn.net/qq_41235053/article/details/81673748

还有一种处理方法,调用collections.counter 函数

In[19]: from collections import Counter
   ...: c = Counter(s)
   ...: print(c["A"], c["C"], c["G"], c["T"])
20 12 17 21

你可能感兴趣的:([Py012] 统计碱基数)