цикл прекращает выполнение при первом результате удовлетворяющем условие
Есть список из которого нужно добыть несколько частей ограниченных определенными словами. длина списка 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 шт):
Так как пока от автора не получены ответы на заданные вопросы, буду телепатом. Представим, что автору надо найти все подсписки от одного определенного слова до другого, причем (возьмем простой случай) подсписки не пересекаются.
У автора в коде ищется только первое вхождение, после первого вхождения итерации проходят в холостую, очевидно, именно это автор называет "перестает работать". Чтобы алгоритм не переставал работать до конца списка, надо ввести в метод 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)
Получаем список подсписков.