 GeeksforGeeks 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], , [4, 5, 6], ]```

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], , [4, 5, 6], ]```

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