Đăng nhập

Bài 12: List Comprehension – Viết danh sách ngắn gọn và hiệu quả

Mục tiêu bài học

  • Hiểu cú pháp và cách hoạt động của List Comprehension
  • Biết tạo danh sách mới từ danh sách có sẵn một cách ngắn gọn
  • Áp dụng được với điều kiện lọc (if) và xử lý logic đơn giản
  • Làm quen với một cách viết hiện đại, nhanh gọn thay cho vòng lặp truyền thống

List Comprehension là gì?

Đây là cách viết danh sách mới từ danh sách cũ chỉ trong 1 dòng.

So với cách dùng for thông thường, List Comprehension:

  • Ngắn hơn
  • Dễ nhìn hơn
  • Chạy nhanh hơn trong nhiều trường hợp

Cú pháp cơ bản

[biểu_thức for biến in danh_sách]

Ví dụ: Bình phương các số từ 1 đến 5

Cách thường:

kq = []
for i in range(1, 6):
    kq.append(i * i)

List comprehension:

kq = [i * i for i in range(1, 6)]

Thêm điều kiện lọc với if

[biểu_thức for biến in danh_sách if điều_kiện]

Ví dụ: Lấy số chẵn từ 1 đến 10

so_chan = [i for i in range(1, 11) if i % 2 == 0]

Lồng list comprehension

Bạn có thể dùng lồng nhiều vòng for nếu cần:

# Tạo bảng cửu chương 2 đến 5
bang = [f"{i} x {j} = {i*j}" for i in range(2, 6) for j in range(1, 4)]

Kết hợp với if...else

["chẵn" if x % 2 == 0 else "lẻ" for x in range(5)]

Kết quả: ['chẵn', 'lẻ', 'chẵn', 'lẻ', 'chẵn']


Dùng với chuỗi, danh sách, tuple, v.v.

ten = ["lan", "bình", "nam"]
ten_hoa = [t.capitalize() for t in ten]
# ['Lan', 'Bình', 'Nam']

Các ví dụ thực tế

a. Tính chiều dài từng từ trong danh sách

tu = ["python", "code", "siêu", "ngắn"]
dodai = [len(x) for x in tu]

b. Loại bỏ dấu cách trong chuỗi

s = "  xin chào python  "
chars = [c for c in s if c != " "]

c. Lọc số nguyên dương từ danh sách hỗn hợp

lst = [1, -2, 0, 3, -1, 5]
duong = [x for x in lst if x > 0]

So sánh: for thường vs. list comprehension

# Cách thường
kq = []
for i in range(10):
    if i % 2 == 0:
        kq.append(i)

# Cách viết đẹp hơn
kq = [i for i in range(10) if i % 2 == 0]

Bài tập luyện tập

Bài 1: Tạo danh sách bình phương của số lẻ từ 1 đến 20

Bài 2: Nhập danh sách tên, chuyển sang chữ in hoa dùng list comprehension

Bài 3: Cho danh sách số, tạo danh sách mới với chuỗi "chẵn" hoặc "lẻ" tương ứng

Bài 4: Cho danh sách chuỗi, tạo danh sách chứa các chuỗi có độ dài > 3


Kết luận

List Comprehension giúp bạn viết mã ngắn hơn, gọn hơn, dễ đọc hơn – một kỹ năng rất được khuyến khích trong Python hiện đại. Khi quen tay, bạn sẽ thấy đây là cách viết “gần như tự nhiên” khi xử lý dữ liệu trong danh sách.


Bài tiếp theo bạn sẽ mở rộng kiến thức về hàm, học cách truyền nhiều tham số không xác định, viết hàm ẩn danh, và tìm hiểu về đệ quy – nền tảng của rất nhiều thuật toán.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.