Python itertools.compress Function

The itertools.compress function in Python's itertools module filters elements from an iterable based on the values of a selector iterable. It is useful for selecting elements from one iterable when the corresponding elements in another iterable are true.

Table of Contents

  1. Introduction
  2. itertools.compress Function Syntax
  3. Examples
    • Basic Usage
    • Using with Lists
    • Combining with Other Itertools Functions
  4. Real-World Use Case
  5. Conclusion

Introduction

The itertools.compress function creates an iterator that filters elements from the first iterable based on the truthiness of the corresponding elements in a second iterable, called the selector. Only elements with a corresponding selector that evaluates to true are included in the output.

itertools.compress Function Syntax

Here is how you use the itertools.compress function:

import itertools

iterator = itertools.compress(data, selectors)

Parameters:

  • data: The iterable whose elements you want to filter.
  • selectors: An iterable of boolean values that determine whether an element in data is included in the output.

Returns:

  • An iterator that yields elements from data where the corresponding element in selectors is true.

Examples

Basic Usage

Filter elements from a list based on a selector list.

Example

import itertools

data = ['A', 'B', 'C', 'D']
selectors = [1, 0, 1, 0]
compressed = itertools.compress(data, selectors)

print(list(compressed))

Output:

['A', 'C']

Using with Lists

Use compress with lists to filter elements.

Example

import itertools

numbers = [10, 20, 30, 40, 50]
selectors = [True, False, True, False, True]
compressed = itertools.compress(numbers, selectors)

print(list(compressed))

Output:

[10, 30, 50]

Combining with Other Itertools Functions

Combine compress with other itertools functions for more complex operations.

Example

import itertools

# Use compress to filter even numbers
numbers = list(range(10))
is_even = [n % 2 == 0 for n in numbers]
even_numbers = itertools.compress(numbers, is_even)

print(list(even_numbers))

Output:

[0, 2, 4, 6, 8]

Real-World Use Case

Filtering Data Based on a Condition

Use compress to filter data based on a condition, such as selecting elements from a dataset that meet certain criteria.

Example

import itertools

# Example dataset and a condition
data = ['apple', 'banana', 'cherry', 'date', 'elderberry']
conditions = [len(fruit) > 5 for fruit in data]
filtered_data = itertools.compress(data, conditions)

print(list(filtered_data))

Output:

['banana', 'cherry', 'elderberry']

Conclusion

The itertools.compress function is used for filtering elements from an iterable based on the truthiness of a selector iterable. It provides a flexible and efficient way to handle selective data processing, making it a valuable addition to your Python toolkit.

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