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.
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}")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ìm hiểu mọi thứ về danh sách Python. Khám phá cách tạo, cắt, sửa đổi và lặp qua các mảng trong Python nguyên bản.
Từ điển PythonLàm chủ từ điển Python. Tìm hiểu cách lưu trữ, tìm nạp và xử lý dữ liệu cặp khóa-giá trị. Hiểu hiệu suất và các phương pháp hay nhất để ánh xạ.
Bộ PythonBộ chính bằng Python. Tìm hiểu cách lưu trữ các giá trị duy nhất, thực hiện giao điểm, hợp nhất, khác biệt và hiểu lợi ích hiệu suất của việc băm.
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.
Cách sắp xếp danh sách trong Python
Tìm hiểu cách sắp xếp danh sách trong Python bằng phương thức Sort() và hàm Sort(). Khám phá các ví dụ về sắp xếp khóa tùy chỉnh và thứ tự đảo ngược.
Bảng tóm tắt hiểu biết về Python
Viết các phần hiểu ngắn gọn và dễ đọc về danh sách, từ điển, tập hợp và trình tạo bằng Python.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.