我正在尝试返回从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))我把这些拼凑在一起,但我似乎仍然不够有效。任何帮助都将不胜感激!
发布于 2021-07-20 03:14:00
您可以利用str.maketrans创建映射,然后使用str.translate执行替换:
mapping = str.maketrans("GCTA", "CGAU")
for dna in "AGGTC", "TTGACT", "ATGGCA":
print(dna.translate(mapping))输出:
UCCAG
AACUGA
UACCGU
>>> str.maketrans返回序号键值对的字典。
发布于 2021-07-20 03:07:38
在这里,映射绝对是正确的方法。但是,您可以在一行中完成所有这些任务,而无需执行所有循环:
RNA_seq = ["".join([mapping[char] for char in DNA_strand]) for DNA_strand in DNA_seq]此外,这将大大提高效率,因为:
对于每个character;
str调用的开销。https://stackoverflow.com/questions/68445715
复制相似问题