Python itertools.batched() Function



The Python itertools.batched() function is used to create an iterator that returns batches of a specified size from an iterable. This function is useful for processing data in fixed-size chunks.

If the number of elements in the iterable is not a multiple of the batch size, the final batch will contain the remaining elements.

Syntax

Following is the syntax of the Python itertools.batched() function −

itertools.batched(iterable, n)

Parameters

This function accepts the following parameters −

  • iterable: The input sequence that needs to be batched.
  • n: The size of each batch.

Return Value

This function returns an iterator that yields tuples containing batches of elements from the given iterable.

Example 1

Following is an example of the Python itertools.batched() function. Here, we divide a list into batches of size 2 −

import itertools

numbers = [1, 2, 3, 4, 5, 6]
batches = itertools.batched(numbers, 2)
for batch in batches:
   print(batch)

Following is the output of the above code −

(1, 2)
(3, 4)
(5, 6)

Example 2

Here, we batch a list of strings into groups of 3 elements each using the itertools.batched() function −

import itertools

words = ["apple", "banana", "cherry", "date", "elderberry", "fig", "grape"]
batches = itertools.batched(words, 3)
for batch in batches:
   print(batch)

Output of the above code is as follows −

('apple', 'banana', 'cherry')
('date', 'elderberry', 'fig')
('grape',)

Example 3

Now, we use itertools.batched() function to process a range of numbers in groups of 4 −

import itertools

numbers = range(1, 11)
batches = itertools.batched(numbers, 4)
for batch in batches:
   print(batch)

The result obtained is as shown below −

(1, 2, 3, 4)
(5, 6, 7, 8)
(9, 10)

Example 4

The itertools.batched() function can also be used to process data in batches while working with files.

Here, we read a list of lines and process them in batches of 2 −

import itertools

lines = ["line1", "line2", "line3", "line4", "line5"]
batches = itertools.batched(lines, 2)
for batch in batches:
   print(batch)

The result produced is as follows −

('line1', 'line2')
('line3', 'line4')
('line5',)
python_modules.htm
Advertisements