Если бы у меня был список, скажите
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. Вложенность еще не важна, поэтому любая помощь будет оценена по достоинству.