Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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:
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.
