Comprehension nâng cao: dict và set comprehension

Sau khi làm quen với list comprehension, bạn có thể áp dụng tư duy tương tự cho dictionary và set. Đây là cách viết code Python vừa ngắn gọn vừa hiệu quả.

Ôn lại list comprehension

binh_phuong = [x*x for x in range(5)]      # [0,1,4,9,16]
chan = [x for x in range(10) if x % 2 == 0]  # có điều kiện

Dict comprehension

# Tạo dict từ hai danh sách
ten = ["An", "Bình"]; tuoi = [20, 22]
d = {t: u for t, u in zip(ten, tuoi)}   # {'An': 20, 'Bình': 22}

# Đảo khóa - giá trị
goc = {"a": 1, "b": 2}
dao = {v: k for k, v in goc.items()}    # {1: 'a', 2: 'b'}

Set comprehension

do_dai = {len(t) for t in ["a", "bb", "cc", "ddd"]}   # {1, 2, 3}

Comprehension lồng nhau

# Ma trận phẳng hóa
ma_tran = [[1, 2], [3, 4]]
phang = [x for hang in ma_tran for x in hang]   # [1,2,3,4]

Khi nào KHÔNG nên dùng?

Comprehension tuyệt vời cho các phép biến đổi đơn giản. Nhưng nếu logic phức tạp (nhiều điều kiện, nhiều bước), một vòng lặp for thông thường sẽ dễ đọc hơn. Ưu tiên sự rõ ràng — đó luôn là tiêu chí hàng đầu trong Python.

Lên đầu trang