GFG App
Open App
Browser
Continue

Python | Split a list into sublists of given lengths

The problem of splitting a list into sublists is quite generic but to split in sublist of given length is not so common. Given a list of lists and list of length, the task is to split the list into sublists of given length. Example:

```Input : Input = [1, 2, 3, 4, 5, 6, 7]
length_to_split = [2, 1, 3, 1]

Output: [[1, 2], [3], [4, 5, 6], [7]]```

Method #1: Using islice to split a list into sublists of given length, is the most elegant way.

Python3

 `# Python code to split a list ` `# into sublists of given length. `   `from` `itertools ``import` `islice `   `# Input list initialization ` `Input` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``] `   `# list of length in which we have to split ` `length_to_split ``=` `[``2``, ``1``, ``3``, ``1``] `   `# Using islice ` `Inputt ``=` `iter``(``Input``) ` `Output ``=` `[``list``(islice(Inputt, elem)) ` `        ``for` `elem ``in` `length_to_split] `   `# Printing Output ` `print``(``"Initial list is:"``, ``Input``) ` `print``(``"Split length list: "``, length_to_split) ` `print``(``"List after splitting"``, Output) `

Output:

```Initial list is: [1, 2, 3, 4, 5, 6, 7]
Split length list:  [2, 1, 3, 1]
List after splitting [[1, 2], [3], [4, 5, 6], [7]]```

Time Complexity: O(n)
Auxiliary Space: O(1)

Method #2: Using zip is another way to split a list into sublists of given length.

Python3

 `# Python code to split a list into ` `# sublists of given length. ` `from` `itertools ``import` `accumulate `   `# Input list initialization ` `Input` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``, ``9``, ``10``] `   `# list of length in which we have to split ` `length_to_split ``=` `[``2``, ``2``, ``3``, ``3``] `   `# Using islice ` `Output ``=` `[``Input``[x ``-` `y: x] ``for` `x, y ``in` `zip``( ` `        ``accumulate(length_to_split), length_to_split)] `   `# Printing Output ` `print``(``"Initial list is:"``, ``Input``) ` `print``(``"Split length list: "``, length_to_split) ` `print``(``"List after splitting"``, Output) `

Output:

```Initial list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Split length list:  [2, 2, 3, 3]
List after splitting [[1, 2], [3, 4], [5, 6, 7], [8, 9, 10]]```

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up