首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用while循环剪接mRNA

使用while循环剪接mRNA
EN

Stack Overflow用户
提问于 2016-04-09 18:28:28
回答 2查看 189关注 0票数 0

我正在Python 3中学习一个编码类,我需要帮助找出我的代码有什么问题。基本上,我所做的是取一个mRNA序列,并剪接出序列中的外显子。我给函数一个序列和外显子的位置,然后它必须将它们拼接出来并返回mRNA的字符串。作业的重点是我们不应该使用列表理解、拆分或连接方法。以下是我到目前为止所拥有的:

代码语言:javascript
运行
复制
def splice(seq, exons):
    newseq = ""
    i = 0
    for x in exons:
        while i < len(seq):
            if i == x[0]:
                i += (x[1] - x[0])
            else:
                newseq += seq[i]
                i = i + 1
    return newseq

与现在一样,我的代码返回的mRNA序列中只有第一个外显子拼接出来,而没有外显子位置列表中的任何其他外显子。如下所示:

代码语言:javascript
运行
复制
>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])
'AAATTTTGGGTTTAA'

它应该返回这个(对于我的例子):'AAATTTTAA‘

有人对如何使这项工作有任何建议吗?谢谢!(提醒我这学期以前除了一点Java之外,我从来没有编码过,所以请不要对我太挑剔。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-09 18:43:23

试试这个:

代码语言:javascript
运行
复制
def splice(seq, exons):
    newseq = ""
    next = 0
    for x, y in exons:
        newseq += seq[next:x]
        next = y
    newseq += seq[next:]        
    return newseq

和测试:

代码语言:javascript
运行
复制
>>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])
'AAATTTTAA'
票数 0
EN

Stack Overflow用户

发布于 2016-04-09 18:48:19

我不知道你是否需要时间循环。下面是一个只使用for循环的版本:

代码语言:javascript
运行
复制
def splice(seq, exons):
    newseq = ""
    i = 0
    n = 0
    for x in exons:
        newseq = seq[i:x[0]-n]+seq[x[1]-n:]
        seq = newseq
        n = x[1]-x[0]
        i = x[0] - n
    return newseq

splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36520951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档