цикл прекращает выполнение при первом результате удовлетворяющем условие

Есть список из которого нужно добыть несколько частей ограниченных определенными словами. длина списка 101 элемент но на 65 перестает работать. Помогите, пожалуйста разобраться!

wall_lst = []
len_lst = len (lst)
x = 0
while x < len_lst:
   if lst.index('designType:wsegment') <= x <= lst.index('type:design'):
        wall_lst.append (lst[x])
   x += 1

Ответы (1 шт):

Автор решения: Alexey Trukhanov

Так как пока от автора не получены ответы на заданные вопросы, буду телепатом. Представим, что автору надо найти все подсписки от одного определенного слова до другого, причем (возьмем простой случай) подсписки не пересекаются.

У автора в коде ищется только первое вхождение, после первого вхождения итерации проходят в холостую, очевидно, именно это автор называет "перестает работать". Чтобы алгоритм не переставал работать до конца списка, надо ввести в метод index параметр start, который указывает с какого индекса начинать поиск и как только мы нашли очередное вхождение, перемещать начало поиска на следующий элемент после последнего в найденном подсписке. Как только совпадений в списке не останется мы получим ValueError, обработаем его и выйдем из цикла.

Как-то так:

lst = ['a', 'b', 'c', 'd', 'z', 'f', 'g', 
       'a', 'i', 'j', 'z', 'l', 'm', 'n', 
       'a', 'p', 'g', 'z', 'd', 'g']
st = 0
out_lst = []
left_word = 'a'
right_word = 'z'

while True:
    try:
        out_lst.append(lst[lst.index(left_word , st):lst.index(right_word, st)+1])
    except ValueError:
        break
    st = lst.index(right_word, st) + 1


print(out_lst)

Получаем список подсписков.

→ Ссылка