Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Một lớp học có 40 học sinh, bạn không thể tạo 40 biến riêng lẻ để lưu điểm. Mảng và danh sách ra đời để giải quyết đúng vấn đề đó: gom nhiều giá trị vào một cấu trúc có thứ tự.
Mảng (array) là một dãy các phần tử xếp liên tiếp, mỗi phần tử có một chỉ số (index) bắt đầu từ 0. Trong Python, cấu trúc tương tự gọi là list, còn JavaScript gọi là array.
diem = [8, 6.5, 9, 7]
print(diem[0]) # 8 (phần tử đầu)
print(diem[3]) # 7 (phần tử cuối)
print(diem[-1]) # 7 (Python cho phép đếm từ cuối)
print(len(diem)) # 4Truy cập phần tử bằng chỉ số cực nhanh vì máy tính tính được vị trí ngay lập tức, bất kể mảng dài bao nhiêu. Đó là điểm mạnh lớn nhất của mảng.
ds = [3, 1, 4]
ds.append(5) # thêm cuối: [3, 1, 4, 5]
ds.insert(1, 9) # chèn vào vị trí 1: [3, 9, 1, 4, 5]
ds.remove(4) # xóa giá trị 4
ds[0] = 100 # sửa phần tử
ds.sort() # sắp xếp tăng dần
print(ds)Trong JavaScript, tương ứng là push, splice, sort, length. Tên khác nhau nhưng ý tưởng giống nhau, bạn chỉ cần tra tài liệu khi chuyển ngôn ngữ.
Hầu như mọi bài toán trên mảng đều bắt đầu bằng việc duyệt:
diem = [8, 6.5, 9, 7]
tong = 0
for d in diem:
tong += d
print("Điểm trung bình:", tong / len(diem))
for i, d in enumerate(diem):
print("Bạn thứ", i + 1, "được", d)Dùng enumerate khi cần cả chỉ số lẫn giá trị, tiện hơn việc tự đếm.
Python cho phép lấy một đoạn con rất gọn:
so = [10, 20, 30, 40, 50]
print(so[1:4]) # [20, 30, 40] (từ 1 đến trước 4)
print(so[:2]) # [10, 20]
print(so[::-1]) # đảo ngược danh sáchMột mảng có thể chứa mảng khác, tạo thành bảng hai chiều như bàn cờ hay ma trận:
luoi = [[1, 2, 3],
[4, 5, 6]]
print(luoi[1][2]) # 6 (hàng 1, cột 2)| Thao tác | Đánh giá |
|---|---|
| Truy cập theo chỉ số | Rất nhanh |
| Thêm vào cuối | Nhanh |
| Chèn hoặc xóa ở giữa | Chậm hơn, phải dời các phần tử phía sau |
| Tìm một giá trị chưa biết vị trí | Phải duyệt từng phần tử |
Vì chèn giữa tốn công, khi cần chèn xóa nhiều bạn có thể cân nhắc cấu trúc khác như danh sách liên kết. Còn nếu cần tra cứu theo khóa, từ điển hay bảng băm thường phù hợp hơn.
diem[4] gây lỗi IndexError.b = a trong Python không tạo bản sao, hai biến cùng trỏ vào một danh sách. Muốn sao chép, dùng b = a.copy() hoặc b = a[:].diem = [7.5, 9, 6, 8.5, 4, 10, 7]
lon_nhat = max(diem)
nho_nhat = min(diem)
trung_binh = sum(diem) / len(diem)
tren_tb = [d for d in diem if d > trung_binh]
dat = sum(1 for d in diem if d >= 5)
print(f"Cao nhất {lon_nhat}, thấp nhất {nho_nhat}")
print(f"Trung bình {trung_binh:.2f}")
print(f"Trên trung bình: {tren_tb}")
print(f"Số bạn đạt: {dat}/{len(diem)}")Đoạn code kết hợp duyệt, tính toán và lọc, ba thao tác bạn sẽ dùng với mảng hầu như mỗi ngày. Hãy thử viết lại mà không dùng max, min, sum để hiểu chúng hoạt động thế nào bên trong, rồi so sánh với phiên bản dùng hàm có sẵn: ngắn hơn, ít lỗi hơn, và đó là lý do ta nên dùng thư viện chuẩn khi đã hiểu nguyên lý.
Mảng là cấu trúc dữ liệu đầu tiên và quan trọng nhất bạn sẽ học. Nắm chắc chỉ số, duyệt, thêm xóa và cắt lát, bạn đã đủ nền để học các cấu trúc phức tạp hơn như stack, queue hay cây. Hãy luyện mỗi ngày một bài nhỏ trên mảng để thành phản xạ.
Nếu cần một lộ trình rõ ràng thay vì tự mò mẫm, codebem.com có nhiều khóa học phù hợp cho người mới.
Nguyễn Đình Cường
0 comment