Python Program to Split a List Into Evenly Sized Chunks

To understand this example, you should have the knowledge of the following Python programming topics:


Example 1: Using yield

def split(list_a, chunk_size):

  for i in range(0, len(list_a), chunk_size):
    yield list_a[i:i + chunk_size]

chunk_size = 2
my_list = [1,2,3,4,5,6,7,8,9]
print(list(split(my_list, chunk_size)))

Output

[[1, 2], [3, 4], [5, 6], [7, 8], [9]]

In the above example, we have defined a function to split the list.

  • Using a for loop and range() method, iterate from 0 to the length of the list with the size of chunk as the step.
  • Return the chunks using yield. list_a[i:i+chunk_size] gives each chunk. For example, when i = 0, the items included in the chunk are i to i + chunk_size which is 0 to (0 + 2)th index. In the next iteration, the items included are 2 to 2 + 2 = 4.

Learn more about yield at Python Generators.

You can do the same thing using list compression as below.

chunk_size = 2
list_chunked = [my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size)]
print(list_chunked)

Output

[[1, 2], [3, 4], [5, 6], [7, 8], [9]]

Learn more about list comprehension at Python List Comprehension.


Example 2: Using numpy

import numpy as np

my_list = [1,2,3,4,5,6,7,8,9]
print(np.array_split(my_list, 5))

Output

[array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8]), array([9])]

array_split() is a numpy method that splits a list into equal sized chunks. Here, the number of chunks is 5.

Note: You need to install numpy on your system.


Also Read:

Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community