我正在尝试编写一个使用字符串的方法,例如DNA字符串,并输出带有子字符串的数字并保留序列。
例如:
>>dna = AABBBGGGKKDDDD
>>substring(dna) #some method
>>2A3B3G2K4D
我猜我可以有一个空数组,然后创建一个循环遍历每个字母的for循环,如果它是相同的字母,则进行计数,然后在最后添加字母。我只是不确定如何从语法上写出来。任何帮助将不胜感激:)
答案 0 :(得分:2)
itertools.groupby()
非常适合此任务:
from itertools import groupby
def get_sequence(dna):
return ''.join(str(len(tuple(g))) + k for k, g in groupby(dna))
print(get_sequence('AABBBGGGKKDDDD'))
# 2A3B3G2K4D
答案 1 :(得分:0)
这是一个简单的例子。
dna = 'AABBBGGGKKDDDD'
def get_sequence(dna):
sequence = ''
previous_c = ''
count = 0
for c in dna:
if c == previous_c:
count += 1
else:
if len(previous_c) > 0:
sequence += '{}{}'.format(count, previous_c)
count = 1
previous_c = c
if count > 0:
sequence += '{}{}'.format(count, previous_c)
return sequence
print(get_sequence('A'))
print(get_sequence(''))
print(get_sequence(dna))
输出:
1A
2A3B3G2K4D