Làm việc với Ma trận trong Python: Từ cơ bản đến thuật toán

05 tháng 4, 2026·3 phút đọc

Ma trận là cấu trúc dữ liệu nền tảng trong lập trình, đóng vai trò quan trọng trong xử lý đồ thị và trí tuệ nhân tạo. Bài viết này sẽ hướng dẫn cách khởi tạo ma trận trong Python và giải quyết các bài toán thuật toán điển hình như chuyển vị và in xoắn ốc.

Làm việc với Ma trận trong Python: Từ cơ bản đến thuật toán

Để giải quyết các vấn đề tính toán, chúng ta thường sử dụng nhiều loại cấu trúc dữ liệu khác nhau như mảng, từ điển (map), v.v. Một trong những cấu trúc dữ liệu quan trọng và phổ biến nhất chính là ma trận hay còn gọi là mảng hai chiều (2D arrays). Ma trận không chỉ giúp lưu trữ dữ liệu dạng bảng mà còn đóng vai trò là nền tảng cho các cấu trúc dữ liệu phức tạp khác như đồ thị.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách định nghĩa ma trận trong Python và xem xét cách giải quyết một số bài toán toán học phổ biến liên quan đến ma trận.

Khởi tạo ma trận trong Python

Cách đơn giản nhất để định nghĩa một ma trận trong Python là sử dụng danh sách lồng nhau (list of lists). Mỗi danh sách con bên trong sẽ đại diện cho một hàng của ma trận.

Ví dụ sau đây minh họa một ma trận 3x3:

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

Ngoài ra, bạn có thể sử dụng List Comprehension để khởi tạo một ma trận có kích thước xác định với các giá trị mặc định. Ví dụ dưới đây tạo ra một ma trận 3x3 với tất cả phần tử đều là 0:

# Sử dụng List Comprehension để tạo ma trận 3x3
matrix_3x3 = [[0] * 3 for _ in range(3)]

Các bài toán phổ biến trên ma trận

Khi làm việc với ma trận, lập trình viên thường gặp phải các bài toán xử lý dữ liệu phức tạp. Dưới đây là hai ví dụ kinh điển: chuyển vị ma trận và in ma trận theo hình xoắn ốc.

1. Chuyển vị ma trận (Transpose)

Chuyển vị ma trận là phép biến đổi hàng thành cột và cột thành hàng. Trong một ma trận vuông, chúng ta có thể thực hiện điều này bằng cách hoán đổi các phần tử đối xứng qua đường chéo chính.

Hàm dưới đây thực hiện việc chuyển vị ngay trên ma trận gốc (in-place):

def calculate_transpose_of_matrix(mat: list[list]) -> list[list]:
    N = len(mat)
    for i in range(N):
       for j in range(i+1, N):
           # Hoán đổi phần tử mat[i][j] và mat[j][i]
           mat[i][j], mat[j][i] = mat[j][i], mat[i][j]

   return mat

2. In ma trận theo dạng xoắn ốc (Spiral Pattern)

Đây là một bài toán thường gặp trong các buổi phỏng vấn kỹ thuật. Ý tưởng là in các phần tử của ma trận theo chiều kim đồng hồ, bắt đầu từ lớp ngoài cùng và di chuyển dần vào trong.

Thuật toán sử dụng 4 biến biên (boundary) để kiểm soát vùng in: top, bottom, left, và right.

def print_matrix_in_spiral(mat: list[list]) -> list[list]:
    R = len(mat)
    C = len(mat[0])

    top = 0
    left = 0
    bottom = R - 1
    right = C - 1

    while top <= bottom and left <= right:
        # In hàng trên cùng từ trái sang phải
        for i in range(left, (right + 1)):
            print(mat[top][i], end=" ")
        top += 1
        
        # In cột phải từ trên xuống dưới
        for i in range(top, (bottom + 1)):
            print(mat[i][right], end=" ")
        right -= 1
        
        # In hàng dưới cùng từ phải sang trái
        if top <= bottom:
            for i in range(right, (left - 1), -1):
                print(mat[bottom][i], end=" ")
            bottom -= 1
        
        # In cột trái từ dưới lên trên
        if left <= right:
            for i in range(bottom, (top - 1), -1):
                print(mat[i][left], end= " ")
            left += 1

Việc nắm vững cách xử lý ma trận là kỹ năng thiết yếu cho bất kỳ lập trình viên Python nào, đặc biệt là trong lĩnh vực Phát triển phần mềm, Khoa học dữ liệu và Trí tuệ nhân tạo (AI).

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗