生信小练习01:统计DNA中核苷酸数量

Problem
string is simply an ordered collection of symbols selected from some alphabet and formed into a word; the length of a string is the number of symbols that it contains.
An example of a length 21 DNA string (whose alphabet contains the symbols 'A', 'C', 'G', and 'T') is "ATGCTTCAGAAAGGTCTTACG."
Given: A DNA string of length at most 1000 nt.
Return: Four integers (separated by spaces) counting the respective number of times that the symbols 'A', 'C', 'G', and 'T' occur in 
Sample Dataset
f='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'counts = []for i in ['A','C','G','T']:counts.append(f.count(i))#str.count(sub,start=0,end=len(str)print '\t'.join(map(str,counts))#join() 方法用于将(序列中的元素)以.join前指定的元素连接生成一个新的字符串。#map(str,counts):['20', '12', '17', '21']

  

AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
Sample Output
20 12 17 21
我的方法:
第一开始我把最后一个if写成了else: g.append(i)。len(g)=58。远远大于实际结果。错误的原因在于,esle对应的是上一个if,所以统计的是非C的数量
f='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
a = []
t = []
c = []
g = []
for i in f:
if i =='A': a.append(i) if i =='T': t.append(i) if i =='C': c.append(i) if i =='G': g.append(i) print len(a) print len(t) print len(c) print len(g)

原博主的方法:

方法一:

f='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
for i in f:
 b = list(f)
 c = {}
for i in b : c[i] = b.count(i)#对c里的key进行赋值,c = {'A': 20, 'C': 12, 'T': 21, 'G': 17} print c.values()

方法二:

f='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
counts = []
for i in ['A','C','G','T']:
counts.append(f.count(i))#str.count(sub,start=0,end=len(str)
print '\t'.join(map(str,counts))#join() 方法用于将(序列中的元素)以.join前指定的元素连接生成一个新的字符串。#map(str,counts):['20', '12', '17', '21']

如果以上代码复制后运行出现错误,请修改下空格和缩进

  

转载于:https://www.cnblogs.com/411learn-forever/p/10017053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值