Làm việc với Ma trận trong Python: Từ cơ bản đến thuật toán
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.

Để 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 liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
