Учитывая строку, мне нужно найти индекс всех палиндромов определенной длины внутри этой последовательности, а затем напечатать этот индекс рядом с длиной палиндрома.Необходимо найти все палиндромы определенной длины
Например, если я хотел палиндромов, которые 4 символов:
seq = 'abbacdefggfhijkkjlmn'
оптимальное считывание будет:
[(0,4), (7,4), (13,4)]
Я написал функцию, которая делает это, однако у меня есть глюк в нем. Он возвращает правильный набор данных, но он возвращает его снова и снова, столько раз, сколько длина последовательности. Например, учитывая последовательность выше, вернуться бы набор данных в 20 раз:
def find_palindromes(seq,y):
L = len(seq)
res = []
for x in seq:
x=0
while x<= L-y:
if seq[x:x+y] == reverse(seq[x:x+y]):
res.append((x,y))
x=x+1
return res
Любое понимание, как на мой глюк будет очень ценна. Я знаю, что это не самый эффективный способ делать что-то, но я невероятно новенький и просто пытаюсь промокнуть.
Пожалуйста исправить отступы в коде – Frodon
Вы зацикливание с 'for' цикла по' x', затем повторно назначая ' x' и выполнить цикл while. Вероятно, вы получите то, что хотите, если вы удалите строку 'for x in seq', а затем исправьте отступ. – 2rs2ts