Print diagonals of 2D list in Python

Python provides powerful features for working with two-dimensional data structures. One common task is extracting diagonal elements from a 2D list (matrix). This article demonstrates how to print both major and minor diagonals using simple iteration methods.

Understanding Matrix Diagonals

Before extracting diagonals, let's understand the concept with a visual representation:

10 0 -1 0 20 -2 -3 0 30 Major Diagonal: 10, 20, 30 Minor Diagonal: -1, 20, -3

In a matrix, there are two types of diagonals:

  • Major diagonal: Elements where row index equals column index (i == j)
  • Minor diagonal: Elements where row + column equals n-1 (i + j == n-1)

Method 1: Printing Major Diagonal

The major diagonal consists of elements where the row and column indices are equal. Here's how to extract them:

def print_major_diagonal(matrix):
    """Print major diagonal elements of a 2D matrix"""
    rows = len(matrix)
    cols = len(matrix[0])
    
    print("Major diagonal elements:")
    for i in range(min(rows, cols)):
        print(matrix[i][i])

# Example matrix
matrix = [[10, 0, -1],
          [0, 20, -2],
          [-3, 0, 30]]

print_major_diagonal(matrix)
Major diagonal elements:
10
20
30

Method 2: Printing Minor Diagonal

The minor diagonal (anti-diagonal) consists of elements where row + column equals n-1:

def print_minor_diagonal(matrix):
    """Print minor diagonal elements of a 2D matrix"""
    rows = len(matrix)
    cols = len(matrix[0])
    
    print("Minor diagonal elements:")
    for i in range(rows):
        j = cols - 1 - i
        if j >= 0:
            print(matrix[i][j])

# Example matrix
matrix = [[10, 0, -1],
          [0, 20, -2],
          [-3, 0, 30]]

print_minor_diagonal(matrix)
Minor diagonal elements:
-1
20
-3

Combined Approach: Both Diagonals

Here's a function that prints both diagonals together:

def print_both_diagonals(matrix):
    """Print both major and minor diagonal elements"""
    rows = len(matrix)
    cols = len(matrix[0])
    
    major_diagonal = []
    minor_diagonal = []
    
    for i in range(rows):
        for j in range(cols):
            if i == j:  # Major diagonal condition
                major_diagonal.append(matrix[i][j])
            if i + j == rows - 1:  # Minor diagonal condition
                minor_diagonal.append(matrix[i][j])
    
    print("Major diagonal:", major_diagonal)
    print("Minor diagonal:", minor_diagonal)

# Test with example matrix
matrix = [[10, 0, -1],
          [0, 20, -2],
          [-3, 0, 30]]

print_both_diagonals(matrix)
Major diagonal: [10, 20, 30]
Minor diagonal: [-1, 20, -3]

Comparison of Methods

Method Diagonal Type Condition Time Complexity
Method 1 Major i == j O(n)
Method 2 Minor i + j == n-1 O(n)
Combined Both Both conditions O(n²)

Conclusion

Extracting diagonal elements from a 2D matrix is straightforward in Python. Use i == j for major diagonal and i + j == n-1 for minor diagonal. The combined approach is useful when you need both diagonals simultaneously.

Updated on: 2026-03-27T14:27:47+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements