Я хочу написать функцию, которая принимает длинную строку символов (последовательность белка типа «UGGUGUUAUUAAUGGUUU») и извлекает из нее три символа за раз (т.е. кодоны). Он может либо возвращать каждый набор из трех символов один за другим, либо список, содержащий все наборы из трех символов. В любом случае будет работать. Но у меня возникли некоторые затруднения с выяснением, как именно это сделать чисто.
Вот что у меня есть до сих пор:
def get_codon_list(codon_string):
codon_start = 0
codon_length = 3
codon_end = 3
codon_list = []
for x in range(len(codon_string) // codon_length):
codon_list.append(codon_string[codon_start:codon_end])
codon_start += codon_length
codon_end += codon_length
return codon_list
Это работает, чтобы вернуть список кодонов, но это кажется очень неэффективным. Мне не нравится использовать жестко запрограммированные числа и такие переменные, если есть лучший способ. Мне также не нравится использовать циклы for, которые фактически не используют переменную в l oop. Это не похоже на правильное использование.
Любые предложения о том, как улучшить это, либо с помощью специфицированной c функции / модуля, либо просто с лучшей техникой Pythoni c?
Спасибо!