87. Python’s itertools Module

The itertools module in Python provides a set of fast, memory-efficient tools for performing iteration and combinatorics, such as working with permutations, combinations, and infinite sequences. Below are 10 Python code snippets demonstrating how to use various functions from the itertools module for efficient iteration and combinatorics:

1. Counting with itertools.count

Copy

import itertools

# Create an infinite counter starting from 0
counter = itertools.count(start=0, step=2)

# Print the first 5 numbers from the counter
for i in itertools.islice(counter, 5):
    print(i)

itertools.count creates an infinite iterator that generates numbers starting from start and increasing by step. In this case, it starts from 0 and increments by 2.


2. Generating Permutations with itertools.permutations

Copy

import itertools

# Generate all permutations of a list of 3 items
items = ['A', 'B', 'C']
permutations = itertools.permutations(items)

# Print the permutations
for perm in permutations:
    print(perm)

itertools.permutations returns all possible permutations of the input iterable. It takes an optional second argument to limit the length of each permutation.


3. Generating Combinations with itertools.combinations

Copy

itertools.combinations returns all possible combinations of the specified length from the input iterable.


4. Cartesian Product with itertools.product

Copy

itertools.product computes the Cartesian product of input iterables, which is similar to a nested for-loop.


5. Infinite Cycling with itertools.cycle

Copy

itertools.cycle creates an infinite iterator that cycles through the elements of the iterable.


6. Repeating Elements with itertools.repeat

Copy

itertools.repeat returns an iterator that repeats the given element indefinitely (or a specified number of times).


7. Chaining Iterables with itertools.chain

Copy

itertools.chain combines multiple iterables into one continuous sequence.


8. Filtering Iterables with itertools.compress

Copy

itertools.compress filters elements from the first iterable based on a selector iterable (True/False values).


9. Grouping Elements with itertools.groupby

Copy

itertools.groupby groups consecutive occurrences of the same value. The result is a key-value pair of the group key and the grouped elements.


10. Taking a Slice of an Iterable with itertools.islice

Copy

itertools.islice allows you to take a slice of an iterable, similar to slicing lists, but works with any iterable.


Last updated