Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
List Comprehension trong Python
Trong lập trình Python, việc xử lý danh sách là một nhiệm vụ phổ biến và quan trọng. Để thực hiện điều này một cách ngắn gọn và hiệu quả, List Comprehension được giới thiệu như một công cụ mạnh mẽ, giúp bạn tạo danh sách chỉ trong một dòng mã. Đây không chỉ là cách viết súc tích, mà còn giúp cải thiện khả năng đọc hiểu và hiệu suất của mã nguồn. Bài viết này sẽ cung cấp cái nhìn tổng quan về List Comprehension, từ khái niệm cơ bản, cú pháp, đến các trường hợp sử dụng nâng cao. Đồng thời, chúng ta cũng sẽ tìm hiểu cách List Comprehension hoạt động so với vòng lặp for truyền thống, cũng như ứng dụng của nó trong Set và Dictionary Comprehension. Hãy cùng bắt đầu tìm hiểu tính năng đặc biệt này!
Hạn chế việc dùng vòng lặp for trong Python
Cách thông thường:
squares = [] for i in range(5): squares.append(i * i) print(squares)
Kết quả:
[0, 1, 4, 9, 16]
Sử dụng List Comprehension (tốt hơn):
# new_list = [biểu_thức for phần_tử in iterable] squares = [i * i for i in range(5)] print(squares)
Kết quả:
[0, 1, 4, 9, 16]
Trong ví dụ trên:
Bài viết này được đăng tại [free tuts .net]
range(5)
là một iterable (có thể là danh sách, tập hợp, hoặc bất kỳ đối tượng iterable nào khác).i * i
là biểu thức được áp dụng lên từng phần tử của iterable.
Kết hợp với Hàm trong Python
Bạn cũng có thể kết hợp List Comprehension với một hàm bất kỳ:
def cube(i): return i * i * i cubes = [cube(i) for i in range(5)] print(cubes)
Kết quả:
[0, 1, 8, 27, 64]
Lọc dữ liệu bằng List Comprehension trong Python
Bạn có thể thêm điều kiện if
để lọc kết quả:
# new_list = [biểu_thức for phần_tử in iterable if điều_kiện] evens = [i for i in range(20) if i % 2 == 0] print(evens)
Kết quả:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Hoặc sử dụng điều kiện với hàm:
def is_even(i): return i % 2 == 0 evens = [i for i in range(20) if is_even(i)] print(evens)
Kết hợp điều kiện if else
trong Python
Bạn cũng có thể dùng List Comprehension để xử lý các trường hợp phân nhánh:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9] b = [10 if i > 5 else 0 for i in a] print(b)