Вот рефакторинг принятого в настоящее время ответа, который вызывает только maketrans
один раз.
tt = str.maketrans({"A":"T", "C":"G", "G":"C", "T": "A"})
for s1 in "AGACAT", "TAGGAC", "ACTAGAA":
print(s1.translate(tt)
Возможно, также отметим, что вы можете связать результат с replace
, хотя это все еще неуклюже и неэффективно:
def acgtgca(s1):
return s1.replace(
"A", "\ue0fa").replace(
"G", "\ue0fb").replace(
"C", "G").replace(
"T", "A").replace(
"\ue0fb", "C").replace(
"\ue0fa", "T")
Это позволяет избежать использования «aux» в качестве специального маркера в пользу двух произвольных символов из Юникода Область частного использования .
Но, опять же,maketrans
метод более аккуратный и эффективный.