Python - Multiply all cross list element pairs

Cross list multiplication involves multiplying each element from the first list with every element from the second list. This creates a Cartesian product of all possible pairs. Python provides several approaches to accomplish this task efficiently.

Understanding Cross List Multiplication

Cross list multiplication takes two lists and produces all possible products between elements. For lists [a, b] and [x, y], the result would be [a×x, a×y, b×x, b×y]. This is essentially computing the outer product and flattening the result.

Using Nested Loops

The most straightforward approach uses nested loops to iterate through each element pair ?

def multiply_cross_items(list1, list2):
    result = []
    for i in list1:
        for j in list2:
            result.append(i * j)
    return result

# Example usage
numbers1 = [2, 3, 4]
numbers2 = [5, 6]
products = multiply_cross_items(numbers1, numbers2)
print(products)
[10, 12, 15, 18, 20, 24]

Using List Comprehension

A more Pythonic approach uses list comprehension for cleaner syntax ?

def multiply_cross_items(list1, list2):
    return [i * j for i in list1 for j in list2]

# Example usage
numbers1 = [1, 2, 3]
numbers2 = [10, 20]
products = multiply_cross_items(numbers1, numbers2)
print(products)
[10, 20, 20, 40, 30, 60]

Using itertools.product

The itertools.product function provides an elegant solution for Cartesian products ?

import itertools

def multiply_cross_items(list1, list2):
    return [a * b for a, b in itertools.product(list1, list2)]

# Example usage
numbers1 = [3, 4]
numbers2 = [2, 5, 7]
products = multiply_cross_items(numbers1, numbers2)
print(products)
[6, 15, 21, 8, 20, 28]

Using NumPy

NumPy's outer product function provides efficient computation for numerical data ?

import numpy as np

def multiply_cross_items(list1, list2):
    array1 = np.array(list1)
    array2 = np.array(list2)
    return np.outer(array1, array2).flatten().tolist()

# Example usage
numbers1 = [2, 3, 4]
numbers2 = [1, 5]
products = multiply_cross_items(numbers1, numbers2)
print(products)
[2, 10, 3, 15, 4, 20]

Comparison

Method Readability Performance Dependencies
Nested Loops Good Standard None
List Comprehension Excellent Fast None
itertools.product Very Good Fast itertools (built-in)
NumPy Good Fastest for large data NumPy

Time Complexity

All approaches have O(n × m) time complexity, where n and m are the lengths of the input lists. This is unavoidable since we must compute every possible pair combination.

Conclusion

List comprehension offers the best balance of readability and performance for most cases. Use NumPy for large numerical datasets, and itertools.product when working with complex data types or when you need the actual pairs.

Updated on: 2026-04-02T17:15:22+05:30

305 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements