Если бы у меня был список, скажите
lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk']
  Я хотел бы разбить его на подсписку с 'foo' и 'bar' качестве начальных и конечных ключевых слов, чтобы я мог получить
lst = ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
 То, как я сейчас это делаю, выглядит следующим образом.
def findLoop(t):   
    inds = [index for index, item in enumerate(t) if item in ["FOO", "BAR"]]
    centre = inds[(len(inds)/2)-1:(len(inds)/2)+1]
    newCentre = t[centre[0]:centre[1]+1]
    return t[:centre[0]] + [newCentre] + t[centre[1]+1:]
def getLoops(t):
    inds = len([index for index, item in enumerate(t) if item in ["FOO", "BAR"]])
    for i in range(inds):
        t = findLoop(t)
    return t
 Это выглядит немного грязно, но он отлично работает для вложенных ключевых слов начала и конца, поэтому подсети могут быть сформированы внутри подсписок, но это не работает для нескольких ключевых слов начала и конца, которые не находятся внутри eachother. Вложенность еще не важна, поэтому любая помощь будет оценена по достоинству.