Hiểu biết về Python: Hiểu về danh sách, đọc chính tả và tập hợp

Viết Python sạch hơn, nhanh hơn. Danh sách chính, từ điển và khả năng hiểu tập hợp với các ví dụ thực tế, điều kiện lọc và vòng lặp lồng nhau.

Thử trong Trình chỉnh sửa

Tổng quan

Tính năng hiểu là một trong những tính năng được yêu thích nhất của Python, cung cấp cú pháp ngắn gọn và dễ đọc để tạo các bộ sưu tập mới (danh sách, từ điển và bộ) từ các lần lặp hiện có. Thay vì viết các vòng lặp `for` nhiều dòng và thêm các mục theo cách thủ công, tính năng hiểu cho phép bạn thực hiện cùng một phép chuyển đổi, lọc và gán trong một dòng mã biểu cảm duy nhất.

Hiểu danh sách là biến thể phổ biến nhất, có cấu trúc như `[biểu thức cho mục trong điều kiện iterable if]`. Về cơ bản, Python tối ưu hóa khả năng hiểu để chạy ở tốc độ gần C, thường vượt trội hơn các vòng lặp `for` thủ công tương đương vì vòng lặp được xử lý bởi trình thông dịch cơ bản. Chúng lý tưởng cho các phép biến đổi nhanh—chẳng hạn như chuyển đổi danh sách nhiệt độ độ C sang độ F hoặc trích xuất các khóa cụ thể từ danh sách bản ghi người dùng.

Ngoài danh sách, Python còn hỗ trợ khả năng hiểu Từ điển và Tập hợp. Việc hiểu từ điển, được xác định bằng dấu ngoặc nhọn và cặp khóa-giá trị (ví dụ: `{key: value for x in iterable}`), rất hữu ích cho việc đảo ngược các cặp ánh xạ hoặc phân tích cú pháp siêu dữ liệu. Đặt mức độ hiểu tạo ra các bộ sưu tập độc đáo bằng cách tự động loại bỏ các bản sao. Mặc dù khả năng hiểu có tác dụng vô cùng mạnh mẽ nhưng các nhà phát triển nên tránh phức tạp hóa chúng quá mức; nếu việc hiểu yêu cầu các vòng lặp lồng nhau hoặc các điều kiện phức tạp thì vòng lặp `for` truyền thống thường dễ đọc và bảo trì hơn.

Đầu ra mã & thực thi

Minh họa các phép biến đổi danh sách, lọc có điều kiện và tạo từ điển từ các đầu vào ánh xạ.

numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
Đầu ra thiết bị đầu cuối
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

Triển khai từng bước

  • Lọc các giá trị trống hoặc dữ liệu không hợp lệ từ nhật ký
  • Ánh xạ tải trọng API vào ánh xạ dữ liệu khóa-giá trị
  • Nhanh chóng định dạng các hàng cơ sở dữ liệu thành các danh sách đơn giản

Câu hỏi thường gặp

Khả năng hiểu có nhanh hơn vòng lặp thông thường không?

Có, trong hầu hết các trường hợp, chúng nhanh hơn vì việc lặp lại được xử lý bằng mã C được tối ưu hóa trong trình thông dịch Python.

Tôi có nên luôn luôn sử dụng khả năng hiểu không?

Không. Khả năng đọc mã là ưu tiên hàng đầu của python. Nếu phần hiểu có logic lồng nhau hoặc dài hơn một hoặc hai dòng thì vòng lặp truyền thống sẽ được ưu tiên.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.