在没有4个不同if
陈述的情况下,使用列表理解返回DNA互补字符的最佳方法是什么?
例如:
A <-> T
“A”返回“T”,“T”返回“A”
G <-> C
“G”返回“C”,“C”返回“G”
没有循环等。允许内置功能。</ p>
答案 0 :(得分:4)
你能拥有这样的外部词典吗?
strand = 'GATTAGAC'
comps = {'A':'T', 'C':'G', 'G':'C', 'T':'A' }
comp_strand = [ comps[x] for x in strand ]
如果您想在输入中容忍未知字符,请查找“defaultdict”
答案 1 :(得分:2)
来自http://biopython.org/wiki/Seq的另一个答案
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_dna
>>> my_dna = Seq("AGTACACTGGT", generic_dna)
>>> my_dna
Seq('AGTACACTGGT', DNAAlphabet())
>>> my_dna.complement()
Seq('TCATGTGACCA', DNAAlphabet())
>>> my_dna.reverse_complement()
Seq('ACCAGTGTACT', DNAAlphabet())