Разделить список на основе условия в Python

#python #list

#python #Список

Вопрос:

У меня есть такой список:

 mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]
  

и мне нужно удалить 0 и собрать остальные числа, которые объединены в группы.

Это то, что я делал до сих пор, но числа не разделены на группы.

 mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]
result = []
indexes = []
for i, j in enumerate(mylist):
    if j != 0:
        result.append(j)
        indexes.append(i)

print(result)
print(indexes)
  

Я не знаю, как продолжить отсюда.

Это результат, который я ищу:

 result = [[2, 3, 4], [6, 7, 8], [4, 9], [2], [2], [20]]
  

Спасибо.

Ответ №1:

Используя itertools.groupby

Пример:

 from itertools import groupby

mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]
result = [list(v) for k, v in groupby(mylist, lambda x: x!=0) if k]
print(result)
  

Вывод:

 [[2, 3, 4], [6, 7, 8], [4, 9], [2], [2], [20]]