Как разбить список на подсписки по элементу "0"
Дан список mas с содержанием элемента 0 (например [1, 6, 0, 2, 3, 0, 4])
Нужно разбить список на подсписки отрезками, используя 0 как разделитель (получится [[1, 6], [2, 3], [4]]) Моя попытка решения, работает, но код ужасный. Подскажите, пожалуйста, более "красивый" вариант решения этой проблемы
mas=list(map(int, input().split()))
ind=[-1]
for i in range(len(mas)):
if mas[i]==0:
ind.append(i)
ind.append(len(mas))
mas1=[]
for i in range(len(ind)-1):
mas1.append(mas[ind[i]+1:ind[i+1]])
print(mas1)
Ответы (2 шт):
Автор решения: Pigeoncatcher
→ Ссылка
На скорую руку такое решение
lst = [1, 6, 0, 2, 3, 0, 4]
result = []
temp = []
for i in lst:
if i != 0:
temp.append(i)
else:
result.append(temp)
temp = []
result.append(temp)
Автор решения: strawdog
→ Ссылка
Воспользуйтесь группировкой от itertools.groupby:
from itertools import groupby
a = [1, 6, 0, 2, 3, 0, 4]
b = [list(group) for key, group in groupby(a, key=lambda x: x!=0) if key]
print(b)
[[1, 6], [2, 3], [4]]