Подсчитать количество последовательностей чередующихся букв длиной n в строке.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Подсчитать количество последовательностей чередующихся букв длиной n в строке.

Сообщение Anonymous »

У меня есть две строки QTNNATTGYH (строка 1) и EEYAYAYEHYTF (строка 2). Я хочу определить, сколько подпоследовательностей этих строк состоят из пар букв в чередующейся последовательности в этих строках.
Например, в моих строках строка 1 не имеет таких подпоследовательностей. В строке 2 есть:

Код: Выделить всё

YAY
AYA
YAY
YAYA
AYAY
Итак, в этом случае я хочу вернуть словарь с длиной повторяющейся подпоследовательности и количеством совпадающих подпоследовательностей, поэтому для этих двух последовательностей будет возвращено следующее:

Код: Выделить всё

dict1 = {3:3,4:2}
т.е. есть три подпоследовательности из трех альтернативных букв и две подпоследовательности из четырех альтернативных букв.
Я написал:

Код: Выделить всё

list_seq2 = ['QTNNATTGYH','EEYAYAYEHYTF']
alternate_dict = {}
for i in range(3,10):
alternate_dict[i] = 0  ##make the final dict of length of alt string to count

for each_num in alternate_dict: #go through dict
for seq in list_seq2: #go through seq list
print(seq)
substrings = [seq[i:i + each_num] for i in range(len(seq) - each_num + 1)] #break seq into substrings of a length

for each_substring in substrings:
print(each_substring)
print(len(each_substring))
print(len(set(list(each_substring)))) ##part where the logic is wrong
print('***')
По логике, если бы длина набора подстроки была на 1 меньше длины подстроки, в ней были бы повторяющиеся буквы, что в некоторых случаях работает для трехбуквенного случая. сценарии (например, ДА, длина последовательности — 3, длина набора букв — 2). Но это не работает в других трехбуквенных сценариях (например, YAA также будет иметь длину последовательности 3, а длину набора 2). Он также не масштабируется за пределы трехбуквенного сценария, я хочу перейти к проверке шаблонов подстрок длиной до 10.
Итак, если у кого-нибудь есть предложение по альтернативному коду, который работает для это, я был бы признателен.

Подробнее здесь: https://stackoverflow.com/questions/788 ... n-a-string
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»