Finding the Cartesian product of strings using Python

The Cartesian product of strings creates all possible combinations between elements from different sets. Python provides several approaches to find the Cartesian product of strings using itertools.product(), nested loops, and lambda functions.

Using itertools.product()

The itertools.product() function provides the most straightforward way to generate Cartesian products ?

import itertools

# Define two sets of strings
set1 = ["welcome", "all", "here"]
set2 = ["see", "you", "soon"]

# Generate Cartesian product using itertools.product()
cart_product = list(itertools.product(set1, set2))

# Concatenate strings from each tuple
result = [a + b for a, b in cart_product]
print(result)
['welcomesee', 'welcomeyou', 'welcomesoon', 'allsee', 'allyou', 'allsoon', 'heresee', 'hereyou', 'heresoon']

Using Nested For Loops

Nested loops provide more control over the iteration process and work well with comma-separated strings ?

# Define strings with comma-separated values
set1 = "welcome, all, here"
set2 = "see, you, soon"

# Initialize empty list for results
cart_product = []

# Nested loops to generate all combinations
for a in set1.split(','):
    for b in set2.split(','):
        # Strip whitespace and concatenate
        cart_product.append(a.strip() + b.strip())

print(cart_product)
['welcomesee', 'welcomeyou', 'welcomesoon', 'allsee', 'allyou', 'allsoon', 'heresee', 'hereyou', 'heresoon']

Using Lambda Function with List Comprehension

Lambda functions combined with list comprehension offer a concise functional programming approach ?

# Define strings with comma-separated values
set1 = "welcome, all, here"
set2 = "see, you, soon"

# Use lambda with map() and list comprehension
cart_product = list(map(lambda pair: pair[0].strip() + pair[1].strip(), 
                       [(i, j) for i in set1.split(',') for j in set2.split(',')]))

print(cart_product)
['welcomesee', 'welcomeyou', 'welcomesoon', 'allsee', 'allyou', 'allsoon', 'heresee', 'hereyou', 'heresoon']

Comparison

Method Readability Performance Best For
itertools.product() High Fast General Cartesian products
Nested loops High Moderate Complex string processing
Lambda + map() Low Moderate Functional programming style

Conclusion

Use itertools.product() for the most efficient and readable Cartesian product operations. Nested loops offer more control for complex string manipulations, while lambda functions provide a functional programming approach.

Updated on: 2026-03-27T13:35:44+05:30

515 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements