【问题标题】:Find unique sub-strings and preserve sequence查找唯一的子字符串并保留序列
【发布时间】:2018-11-06 00:36:17
【问题描述】:

我正在尝试编写一个方法,它接受一个字符串,例如一个 DNA 字符串,并输出带有子字符串的数字并保留序列。

例如:

>>dna = AABBBGGGKKDDDD
>>substring(dna) #some method
>>2A3B3G2K4D

我猜我可以有一个空数组,然后创建一个循环遍历每个字母,如果它是同一个字母,它会进行计数,然后将字母添加到最后。我只是不确定如何在语法上写出来。任何帮助将不胜感激:)

【问题讨论】:

  • 我建议你试一试这个想法,看看它会导致什么:)

标签: python arrays string


【解决方案1】:

这是一个简单的例子。

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

【讨论】:

  • 谢谢!这正是我的想法,我没有考虑为前一个角色创建一个单独的变量
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2011-04-10
    • 2014-02-02
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多