Python – Product of kth column in list of lists

Python lists can contain sublists, creating a two-dimensional structure. Sometimes you need to calculate the product of elements in a specific column across all rows. This article demonstrates how to find the product of the kth column in a list of lists using different approaches.

For example, consider this 3x3 matrix:

matrix = [[1, 2, 3],
          [4, 5, 6], 
          [7, 8, 9]]

# To get product of column 2 (index 2): 3 * 6 * 9 = 162

Using For Loop

The simplest approach uses a for loop to iterate through each row and multiply the elements at the specified column index ?

def product_of_column(matrix, col_index):
    # Check if input is a list
    if not isinstance(matrix, list):
        raise ValueError("Input must be a list")
    
    # Validate that all rows have the required column
    for i, row in enumerate(matrix):
        if col_index >= len(row):
            raise IndexError(f"Row {i} doesn't have column {col_index}")
    
    # Calculate product using for loop
    result = 1
    for row in matrix:
        result *= row[col_index]
    
    return result

# Example usage
matrix = [[1, 2, 3],
          [4, 5, 6], 
          [7, 8, 9]]

print("Product of column 2:", product_of_column(matrix, 2))
print("Product of column 0:", product_of_column(matrix, 0))
Product of column 2: 162
Product of column 0: 28

Using reduce() Function

The reduce() function from the functools module provides a more functional programming approach ?

from functools import reduce
import operator

def product_of_column_reduce(matrix, col_index):
    # Input validation
    if not isinstance(matrix, list):
        raise ValueError("Input must be a list")
    
    # Check column exists in all rows
    for i, row in enumerate(matrix):
        if col_index >= len(row):
            raise IndexError(f"Row {i} doesn't have column {col_index}")
    
    # Extract column elements and calculate product
    column_elements = [row[col_index] for row in matrix]
    return reduce(operator.mul, column_elements)

# Example usage
matrix = [[2, 3, 4],
          [1, 2, 3],
          [5, 6, 7]]

print("Product using reduce():", product_of_column_reduce(matrix, 1))
Product using reduce(): 36

Using NumPy (Alternative)

For larger matrices, NumPy provides an efficient solution ?

import numpy as np

def product_with_numpy(matrix, col_index):
    arr = np.array(matrix)
    return np.prod(arr[:, col_index])

# Example
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = product_with_numpy(matrix, 2)  # Returns 162

Comparison

Method Performance Dependencies Best For
For Loop Good None Simple cases, learning
reduce() Good functools Functional programming style
NumPy Excellent numpy Large matrices, scientific computing

Conclusion

Use the for loop approach for simple cases and better readability. The reduce() method offers a functional programming style, while NumPy is ideal for performance-critical applications with large datasets.

Updated on: 2026-03-27T14:24:58+05:30

194 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements