首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中将DNA序列列表转录为RNA

如何在Python中将DNA序列列表转录为RNA
EN

Stack Overflow用户
提问于 2021-07-20 03:02:01
回答 2查看 102关注 0票数 0

我正在尝试返回从DNA序列转录而来的RNA序列列表。理想情况下,它应该如下所示:

代码语言:javascript
复制
DNA_seq = ['AGGTC','TTGACT','ATGGCA']
RNA_seq = ['UCCAG','AACUGA','UACCGU']

根据我的理解,字典应该帮助存储每个核苷酸及其相应碱基对的键值对。这是我到目前为止所知道的:

代码语言:javascript
复制
def RNA(DNA_strand):
    mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}
    rna_strand = ''
    for char in DNA_strand:
        rna_strand += mapping[char]
    return rna_strand
RNA_seq = []
for x in DNA_seq:
    RNA_seq.append(RNA(x))

我把这些拼凑在一起,但我似乎仍然不够有效。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2021-07-20 03:14:00

您可以利用str.maketrans创建映射,然后使用str.translate执行替换:

代码语言:javascript
复制
mapping = str.maketrans("GCTA", "CGAU")

for dna in "AGGTC", "TTGACT", "ATGGCA":
    print(dna.translate(mapping))

输出:

代码语言:javascript
复制
UCCAG
AACUGA
UACCGU
>>> 

str.maketrans返回序号键值对的字典。

票数 3
EN

Stack Overflow用户

发布于 2021-07-20 03:07:38

在这里,映射绝对是正确的方法。但是,您可以在一行中完成所有这些任务,而无需执行所有循环:

代码语言:javascript
复制
RNA_seq = ["".join([mapping[char] for char in DNA_strand]) for DNA_strand in DNA_seq]

此外,这将大大提高效率,因为:

对于每个character;

  • list,它不执行连接,在这种情况下,它比相应的
  • 循环更快,因为它避免了多个str调用的开销。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68445715

复制
相关文章

相似问题

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