Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2021 08:31:59

izooomrud
Зарегистрирован: 2021-01-16
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить список на равные части

Как можно разбить список

 a = [1,2,3,4,5,6,7,8,9,10]
что бы в результате получить список вида
 [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
?

Офлайн

#2 Янв. 21, 2021 09:36:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Разбить список на равные части

Для начала хватит. Дальше можешь оптимизировать, если оно потребуется вообще.

  
>>> def split_list(lst, n):
...     out = []
...     tmp = []
...     for i in lst:
...         tmp.append(i)
...         if len(tmp) == n:
...             out.append(tmp)
...             tmp = []
...     if tmp:
...         out.append(tmp)
...     return out
... 
>>> split_list([1, 2, 3, 4, 5, 6], 1)
[[1], [2], [3], [4], [5], [6]]
>>> split_list([1, 2, 3, 4, 5, 6], 2)
[[1, 2], [3, 4], [5, 6]]
>>> split_list([1, 2, 3, 4, 5, 6], 3)
[[1, 2, 3], [4, 5, 6]]
>>> split_list([1, 2, 3, 4, 5, 6], 4)
[[1, 2, 3, 4], [5, 6]]
>>> split_list([1, 2, 3, 4, 5, 6], 5)
[[1, 2, 3, 4, 5], [6]]
>>> split_list([1, 2, 3, 4, 5, 6], 6)
[[1, 2, 3, 4, 5, 6]]
>>> split_list([1, 2, 3, 4, 5, 6], 7)
[[1, 2, 3, 4, 5, 6]]
>>>


tags: split list



Отредактировано py.user.next (Янв. 26, 2021 00:37:35)

Офлайн

#3 Янв. 21, 2021 21:59:14

sepomd
Зарегистрирован: 2013-12-09
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить список на равные части

А зачем нужен второй if?

Офлайн

#4 Янв. 22, 2021 00:29:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Разбить список на равные части

sepomd
А зачем нужен второй if?
Без него в этом примере 5 и 6 пропадут
  
>>> split_list([1, 2, 3, 4, 5, 6], 4)
[[1, 2, 3, 4], [5, 6]]
>>>

Отключил второй if
  
>>> def split_list(lst, n):
...     out = []
...     tmp = []
...     for i in lst:
...         tmp.append(i)
...         if len(tmp) == n:
...             out.append(tmp)
...             tmp = []
...     # if tmp:
...     #     out.append(tmp)
...     return out
... 
>>> split_list([1, 2, 3, 4, 5, 6], 4)
[[1, 2, 3, 4]]
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version