Trong hành trình học Python, danh sách (list) là người bạn đồng hành quan trọng. Nhưng khi bạn muốn xử lý dữ liệu hiệu quả và linh hoạt hơn, đã đến lúc tìm hiểu các kỹ thuật nâng cao như list comprehension (rút gọn danh sách) và danh sách lồng nhau (nested list).
⚡ List Comprehension: Viết Danh Sách Thật Ngắn Gọn
Thay vì viết nhiều dòng code để xây dựng một danh sách mới, bạn có thể sử dụng cú pháp gọn gàng chỉ trong một dòng.
Cấu trúc cơ bản:
[biểu_thức for biến in iterable nếu điều_kiện]
🔹 Ví dụ 1: Tạo danh sách bình phương các số
Cách truyền thống:
binh_phuong = []
for x in range(5):
binh_phuong.append(x ** 2)
List comprehension:
binh_phuong = [x ** 2 for x in range(5)]
# Kết quả: [0, 1, 4, 9, 16]
🔹 Ví dụ 2: Lọc số chẵn
Cách truyền thống:
so_chan = []
for x in range(10):
if x % 2 == 0:
so_chan.append(x)
List comprehension:
so_chan = [x for x in range(10) if x % 2 == 0]
# Kết quả: [0, 2, 4, 6, 8]
🔹 Ví dụ 3: Chuyển chuỗi sang chữ in hoa
Cách truyền thống:
ten = ["Hà", "Minh", "Trang"]
ten_in_hoa = []
for t in ten:
ten_in_hoa.append(t.upper())
List comprehension:
ten_in_hoa = [t.upper() for t in ten]
# Kết quả: ['HÀ', 'MINH', 'TRANG']
🔹 Ví dụ 4: Tạo danh sách các cặp số
Cách truyền thống:
cap_so = []
for x in range(3):
for y in range(2):
cap_so.append((x, y))
List comprehension:
cap_so = [(x, y) for x in range(3) for y in range(2)]
# Kết quả: [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
🔹 Ví dụ 5: Tạo tổ hợp không trùng lặp
Cách truyền thống:
to_hop = []
for x in range(1, 4):
for y in range(1, 4):
if x != y:
to_hop.append((x, y))
List comprehension:
to_hop = [(x, y) for x in range(1, 4) for y in range(1, 4) if x != y]
# Kết quả: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
🧱 Danh Sách Lồng Nhau (Nested Lists)
Python cho phép bạn tạo danh sách bên trong danh sách, giúp mô phỏng ma trận, bảng dữ liệu, hay cấu trúc phân cấp.
ma_tran = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Đây là một ma trận 3×3 – mỗi dòng là một danh sách con.
Truy cập phần tử trong danh sách lồng nhau
print(ma_tran[0][1]) # Kết quả: 2 (dòng 0, cột 1)
Duyệt qua danh sách lồng nhau
for dong in ma_tran:
for phan_tu in dong:
print(phan_tu, end=" ")
Kết quả: in ra từng phần tử theo thứ tự từ trên xuống, trái sang phải.
Ví dụ Ứng Dụng Thực Tế
✅ Tính tổng tất cả phần tử trong danh sách lồng nhau
tong = 0
for dong in ma_tran:
for so in dong:
tong += so
print("Tổng:", tong) # Kết quả: 45
Tìm giá trị lớn nhất
lon_nhat = float('-inf')
for dong in ma_tran:
for so in dong:
if so > lon_nhat:
lon_nhat = so
print("Lớn nhất:", lon_nhat) # Kết quả: 9
Hiểu và áp dụng thành thạo các kỹ thuật list nâng cao giúp bạn viết code Python:
- Gọn gàng hơn
- Hiệu quả hơn
- Dễ bảo trì hơn
Dù là xử lý dữ liệu, xây dựng giao diện, hay làm việc với file CSV, list comprehension và danh sách lồng nhau sẽ là vũ khí mạnh mẽ trong kho công cụ của bạn.