Помогите доработать функцию разделения списка
def list_slice(lst, count):
n = len(lst) // count
grps = (lst[i:i + n] for i in range(0, len(lst), n))
return list(grps)
list1 = [1, 2, 3, 4, 5, 6]
При вызове функции list_slice(list1, 2) выводит список [[1, 2, 3], [4, 5, 6]], но мне нужно это [[1, 2, 3, 4], [5, 6]]. То есть чтобы длина каждого списка в выведенном списке была 4 элемента.
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
Вы слайс по списку берете не так, как нужно. Как вариант Ваш пример можно сделать таким образом:
def list_slice(lst, count):
gen = (lst[count*i:count*(i+1)] for i in range(len(lst) // count + 1))
return list(filter(bool, gen))
list1 = [1, 2, 3, 4, 5, 6]
print(list_slice(list1, 3)) # [[1, 2, 3, 4], [5, 6]]
В конце использую filter(bool, func) для отсечения пустых списков