猿问

删除不等于n部分的块

我想把这个序列分成一个 n=3 的列表。


codons('agucaccgucautc')

# result = ['agu','cac','cgu','cau']

# 'tc' is supposed to be ignored as it doesn't equal to n=3

我尝试过以下解决方案;


def codons(RNA): 

    """This functions returns a list of codons present in an RNA sequence"""


    # store the length of string

    length = len(RNA)


    #divide the string in n equal parts

    n = 3

    temp = 0

    chars = int(len(RNA)/3)


    #stores the array of string

    change = []


    #check whether a string can be divided into n equal parts

    for i in range(0, length, chars):

        part = [RNA[i:i+3] for i in range(0, length, n)];

        change.append(part);

        return part


        if (length % n != 0):

            continue

但是当我尝试再次运行之前的代码时,它仍然返回“tc”


codons('agucaccgucautc')

# result = ['agu', 'cac', 'cgu', 'cau', 'tc']

谁能帮我做什么来忽略任何不等于 n=3 或最后一部分“tc”的字符?


暮色呼如
浏览 108回答 1
1回答

波斯汪

您可以按以下方式使用列表理解:s = 'agucaccgucautc'n = 3out = [(s[i:i+n]) for i in range(0, len(s), n) if len(s[i:i+n])%n == 0] 
随时随地看视频慕课网APP

相关分类

Python
我要回答