Menu
Coddy logo textTech

Itertools Module

Lesson 8 of 13 in Coddy's Python Iterators course.

The itertools module in Python is a powerful collection of fast, memory-efficient tools for working with iterators. It provides a set of functions that create iterators for efficient looping and data processing. Let's explore some of the most useful functions in this module.

Importing itertools

import itertools

Infinite Iterators

These iterators will continue indefinitely unless you stop them:

  • count(start, step): Counts up infinitely from a start value
  • cycle(iterable): Cycles through an iterable indefinitely
  • repeat(elem, [n]): Repeats an element n times (infinitely if n is not specified)

Iterators terminating on the shortest input sequence

  • chain(*iterables): Chains multiple iterables together
  • islice(iterable, start, stop[, step]): Slices an iterator
  • zip_longest(*iterables, fillvalue=None): Like zip(), but continues until the longest iterable is exhausted

Combinatoric Iterators

  • product(*iterables, repeat=1): Cartesian product of input iterables
  • permutations(iterable, r=None): All possible r-length permutations
  • combinations(iterable, r): r-length combinations in sorted order

Example Usage

import itertools

# Using count
for i in itertools.count(10, 2):
    if i > 20:
        break
    print(i)  # Prints 10, 12, 14, 16, 18, 20

# Using cycle
colors = itertools.cycle(['red', 'green', 'blue'])
for _ in range(6):
    print(next(colors))  # Prints red, green, blue, red, green, blue

# Using chain
numbers = itertools.chain([1, 2, 3], [4, 5, 6])
print(list(numbers))  # Prints [1, 2, 3, 4, 5, 6]

# Using combinations
letters = 'ABCD'
print(list(itertools.combinations(letters, 2)))
# Prints [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

The itertools module provides many more functions, each designed to solve specific iteration problems efficiently. By using these tools, you can write more concise and performant code when working with iterators and iterable objects in Python.

quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

challenge icon

Challenge

Easy

Create a program that uses the itertools module to generate and process a sequence of playing cards. The program should demonstrate the use of product() and islice() functions.

You are provided with the following:

  • Two input strings: one for ranks and one for suits, separated by commas
  • Two integers: start and stop positions for slicing

Your program should:

  1. Use itertools.product() to generate all possible combinations of ranks and suits
  2. Use itertools.islice() to select a portion of these combinations based on the given start and stop positions
  3. Format each card as "Rank of Suit" (e.g., "Ace of Spades")
  4. Print each formatted card on a new line

The input will be provided as follows:

  • First line: Ranks (comma-separated string)
  • Second line: Suits (comma-separated string)
  • Third line: Two space-separated integers for start and stop positions

Try it yourself

import itertools

# Read input
ranks = input().split(',')
suits = input().split(',')
start, stop = map(int, input().split())

# TODO: Write your code below
# Use itertools.product() to generate all possible combinations of ranks and suits
# Use itertools.islice() to select a portion of these combinations
# Format each card as "Rank of Suit"

# Print each formatted card on a new line
# print(card)

All lessons in Python Iterators