[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]: <map at 0x2390aef8128>
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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容