The itertools.starmap function in Python’s itertools module returns an iterator that computes the specified function using arguments obtained from the iterable. It is particularly useful for applying a function to the elements of a list of tuples or other iterables where the elements themselves are iterables.
Table of Contents
- Introduction
- itertools.starmapFunction Syntax
- Examples
- Basic Usage
- Using with Built-in Functions
- Using with Lambda Functions
- Combining with Other Itertools Functions
 
- Real-World Use Case
- Conclusion
Introduction
The itertools.starmap function is designed to apply a function to every item of an iterable, where the items themselves are iterables (like tuples or lists). This function is particularly useful when you have a list of tuples and you want to apply a function that takes multiple arguments.
itertools.starmap Function Syntax
Here is how you use the itertools.starmap function:
import itertools
iterator = itertools.starmap(function, iterable)
Parameters:
- function: The function to be applied to the elements of the iterable.
- iterable: An iterable, where each element is itself an iterable of arguments to be passed to the function.
Returns:
- An iterator that yields the results of applying the function to the elements of the iterable.
Examples
Basic Usage
Apply a function to a list of tuples.
Example
import itertools
def add(a, b):
    return a + b
data = [(1, 2), (3, 4), (5, 6)]
result = itertools.starmap(add, data)
print(list(result))
Output:
[3, 7, 11]
Using with Built-in Functions
Use starmap with the pow function to raise numbers to a power.
Example
import itertools
data = [(2, 3), (3, 2), (10, 3)]
result = itertools.starmap(pow, data)
print(list(result))
Output:
[8, 9, 1000]
Using with Lambda Functions
Use starmap with a lambda function to multiply elements.
Example
import itertools
data = [(2, 3), (3, 4), (5, 6)]
result = itertools.starmap(lambda x, y: x * y, data)
print(list(result))
Output:
[6, 12, 30]
Combining with Other Itertools Functions
Use starmap with zip to apply a function to paired elements from two lists.
Example
import itertools
data1 = [1, 2, 3]
data2 = [4, 5, 6]
result = itertools.starmap(lambda x, y: x + y, zip(data1, data2))
print(list(result))
Output:
[5, 7, 9]
Real-World Use Case
Applying a Function to Rows of Data
Use starmap to apply a function to rows of data read from a file or database.
Example
import itertools
data = [
    (1, 2, 3),
    (4, 5, 6),
    (7, 8, 9)
]
def process_row(a, b, c):
    return a + b + c
result = itertools.starmap(process_row, data)
print(list(result))
Output:
[6, 15, 24]
Conclusion
The itertools.starmap function is used for applying a function to elements of an iterable, where the elements themselves are iterables. It simplifies the process of working with functions that take multiple arguments and allows for efficient processing of data in a clean and readable manner.