簡體   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