Problem
A 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']
如果以上代码复制后运行出现错误,请修改下空格和缩进