繁体   English   中英

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

[英]How to transcribe a list of DNA sequences to RNA in Python

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

DNA_seq = ['AGGTC','TTGACT','ATGGCA']
RNA_seq = ['UCCAG','AACUGA','UACCGU']

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

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))

我有点拼凑起来,但我似乎仍然不够有效。 任何帮助将非常感激!

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

mapping = str.maketrans("GCTA", "CGAU")

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

输出:

UCCAG
AACUGA
UACCGU
>>> 

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

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

RNA_seq = ["".join([mapping[char] for char in DNA_strand]) for DNA_strand in DNA_seq]

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

  • 它不会为每个字符执行str连接;
  • 在这种情况下,list comp 比相应的 for 循环更快,因为它避免了多次list.append()调用的开销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM