0
0
Lập trình
Admin Team
Admin Teamtechmely

So sánh List Comprehension và Dictionary Comprehension trong Python

Đăng vào 1 tháng trước

• 3 phút đọc

So sánh List Comprehension và Dictionary Comprehension trong Python

Python cung cấp comprehensions như một cách ngắn gọn để tạo ra danh sách, từ điển và thậm chí là tập hợp. Hai kiểu phổ biến nhất là list comprehensiondictionary comprehension. Trong bài viết này, chúng ta sẽ khám phá sự khác biệt giữa chúng và cách sử dụng — bao gồm việc kết hợp hai danh sách thành một từ điển.

List Comprehension

List comprehension giúp tạo ra một danh sách bằng cách lặp qua một iterable và áp dụng một biểu thức.

Cú pháp:

Copy
[biểu_thức for item in iterable if điều_kiện]

Ví dụ:

python Copy
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)  
# [1, 4, 9, 16, 25]

Trong ví dụ trên, squares là một danh sách mà mỗi số được bình phương.

Dictionary Comprehension

Dictionary comprehension giúp tạo ra một từ điển với các cặp khóa-giá trị.

Cú pháp:

Copy
{biểu_thức_khóa: biểu_thức_giá_trị for item in iterable if điều_kiện}

Ví dụ:

python Copy
numbers = [1, 2, 3, 4, 5]
square_dict = {n: n**2 for n in numbers}
print(square_dict)  
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Ở đây, mỗi số được sử dụng làm khóa, và bình phương của nó là giá trị.

Kết hợp Hai Danh Sách Thành Một Từ Điển

Giả sử bạn có hai danh sách:

python Copy
keys = ["a", "b", "c"]
values = [1, 2, 3]

Bạn có thể kết hợp chúng thành một từ điển bằng cách sử dụng dictionary comprehension.

1. Sử dụng zip()

Cách làm phổ biến nhất trong Python:

python Copy
my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)  
# {'a': 1, 'b': 2, 'c': 3}

Hàm zip() sẽ ghép các phần tử từ cả hai danh sách cho đến khi danh sách ngắn nhất kết thúc.

2. Sử dụng Chỉ Mục với range()

Nếu cả hai danh sách có cùng chiều dài:

python Copy
my_dict = {keys[i]: values[i] for i in range(len(keys))}
print(my_dict)  
# {'a': 1, 'b': 2, 'c': 3}

3. Sử dụng enumerate()

Bằng cách liệt kê một danh sách và chỉ mục của danh sách còn lại:

python Copy
my_dict = {key: values[i] for i, key in enumerate(keys)}
print(my_dict)  
# {'a': 1, 'b': 2, 'c': 3}

4. Thêm Điều Kiện

Bạn có thể lọc trong quá trình kết hợp. Ví dụ, chỉ bao gồm các giá trị lớn hơn 1:

python Copy
my_dict = {keys[i]: values[i] for i in range(len(keys)) if values[i] > 1}
print(my_dict)  
# {'b': 2, 'c': 3}

Lưu ý Quan Trọng

  • List comprehension → tạo ra một danh sách.
  • Dictionary comprehension → tạo ra một từ điển (các cặp khóa-giá trị).
  • Bạn có thể kết hợp hai danh sách thành một từ điển bằng cách sử dụng:
    • zip() (phổ biến nhất)
    • range() với chỉ mục
    • enumerate()
    • Lọc với điều kiện

Thực hành tốt nhất

  • Sử dụng zip() khi kết hợp hai danh sách có cùng số lượng phần tử là cách tối ưu nhất.
  • Tránh sử dụng quá nhiều điều kiện lọc trong comprehension, điều này có thể làm giảm hiệu suất và dễ gây nhầm lẫn.

Cạm bẫy phổ biến

  • Không kiểm tra chiều dài của hai danh sách trước khi kết hợp có thể dẫn đến lỗi. Hãy luôn kiểm tra để đảm bảo rằng danh sách của bạn có cùng chiều dài khi sử dụng range() hoặc enumerate().

Mẹo Hiệu Suất

  • Sử dụng comprehension thay vì vòng lặp thông thường để tăng tốc độ thực thi và giảm lượng mã.

Giải quyết sự cố

  • Nếu bạn gặp lỗi trong quá trình tạo từ điển, hãy kiểm tra lại biểu thức khóa và giá trị. Đảm bảo chúng không có lỗi cú pháp và các biến đều đã được định nghĩa.

Kết luận

List comprehension và dictionary comprehension là những công cụ mạnh mẽ giúp tăng tốc độ lập trình và giảm thiểu mã lệnh. Bằng cách hiểu rõ cách sử dụng chúng, bạn có thể tối ưu hóa mã Python của mình một cách hiệu quả. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới nhé. Chúc bạn có một ngày tốt lành!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào