我试图返回从 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()
调用的开销。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(78条)