Python汇总来自不同长度的多行字符

我想要一个遍历下面每个列表项的函数,如果该项不带有“>”,我希望该函数计算每行中的字符,然后将它们加在一起''' ''' 我的第一个问题是我不知道如何使用带有字符串列表的 startswith() 类型函数 我的第二个问题是我不知道如何将所有行汇总在一起 此函数需要处理具有任意数量字符的行。


示例列表


one_seq = ['>JM_001 hypo pr\n', 'MQGNQST\n', 'HLR\n']


我正在尝试组合的递归代码


def get_seq_length(seq):

    if line in seq line.startswith('>'):

        return sum(seq)

    else:

        length = get_seq_length(len(seq))

        return length


get_seq_length(one_seq)


largeQ
浏览 237回答 3
3回答

明月笑刀无情

我希望您可能会发现拥有序列 ID 和序列长度很有用。这使用了与之前的答案相同的列表理解,但它也去掉了换行符 ( \n)。one_seq = ['>JM_001 hypo pr\n', 'MQGNQST\n', 'HLR\n']seq_id,seq_len = process_seq(one_seq)def process_seq(seq_lines):    # using first line, remove >, remove \n and split at spaces taking the first part    seq_id = seq_lines[0].replace('>','').rstrip().split(" ")[0]    # get the sequence length:    seq_len = sum(len(line.rstrip()) for line in seq_lines if not line.startswith('>'))    return (seq_id,seq_len)

蝴蝶不菲

不要认为这段代码需要递归,试试这个:sum([len(x) for x in one_seq if not x.startswith(">")])对于每个不以“>”开头的元素,它将使用 len 函数计算字符数。然后将相关元素的所有长度相加得到总长度

富国沪深

IIUC 您想计算行列表 ( one_seq)中每个元素(或行)的字符数。要计算给定行中的字符数,您可以使用len(),然后利用列表理解并将sum()每行的字符数相加。从您的 OP 来看,您似乎只想在列表中至少有 1行不是以 开头的情况下这样>做,您可以使用any(). 这应该这样做:sum([len(line) for line in one_seq if any(not l.startswith('>') for l in one_seq)])测试几个例子:one_seq = ['>JM_001 hypo pr\n', 'MQGNQST\n', 'HLR\n']one_seq = ['>JM_001 hypo pr\n', '>MQGNQST\n', '>HLR\n']one_seq = ['>JM_93rnfo pr\n', '>MQGT\n', 'HKHASDKN\n']产量:28029
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python