How To Split a list into equally sized chunks in Python
Created
Modified
Using List Comprehension
List comprehensions provide a concise way to create lists. The following example:
#!/usr/bin/python3
# -*- coding: utf8 -*-
# initialize
lst = ['a'] * 7
# chunks
n = 3
a = [lst[i:i+n] for i in range(0, len(lst), n)]
print(a)
[['a', 'a', 'a'], ['a', 'a', 'a'], ['a']]
Using yield
The yield keyword enables a function to comeback where it left off when it is called again. For example,
#!/usr/bin/python3
# -*- coding: utf8 -*-
def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
# initialize
lst = ['a'] * 7
# chunks
n = 3
a = list(chunks(lst, n))
print(a)
[['a', 'a', 'a'], ['a', 'a', 'a'], ['a']]
Using NumPy Module
NumPy is the fundamental package for scientific computing in Python.
If you use pip, you can install NumPy with:
pip
pip install numpy
pip3 install numpy
#!/usr/bin/python3
# -*- coding: utf8 -*-
# Import module
import numpy as np
# initialize
lst = ['a'] * 7
a = np.array_split(lst, 3)
print(a)
[['a' 'a' 'a'],['a' 'a'],['a' 'a']]
numpy.array_split
split an array into multiple sub-arrays. For an array of length l that should be split into n sections, it returns l % n sub-arrays of size l//n + 1 and the rest of size l//n.