Найти - Пользователи
Полная версия: Разбить список на равные части
Начало » Python для новичков » Разбить список на равные части
1
izooomrud
Как можно разбить список
 a = [1,2,3,4,5,6,7,8,9,10]
что бы в результате получить список вида
 [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
?
py.user.next
Для начала хватит. Дальше можешь оптимизировать, если оно потребуется вообще.
  
>>> 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
sepomd
А зачем нужен второй if?
py.user.next
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]]
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB