Python itertools.starmap Function

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

  1. Introduction
  2. itertools.starmap Function Syntax
  3. Examples
    • Basic Usage
    • Using with Built-in Functions
    • Using with Lambda Functions
    • Combining with Other Itertools Functions
  4. Real-World Use Case
  5. 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.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare