Hướng dẫn cách sử dụng List comprehension trong Python. Bạn sẽ học được khái niệm List comprehension trong Python là gì cũng như cách sử dụng List comprehension để tạo list sau bài học này.
List comprehension trong Python là gì
Trong lập trình Python, “List Comprehension” (viết tắt là “LC”) là một công cụ mạnh mẽ và linh hoạt được sử dụng để tạo danh sách một cách dễ dàng và hiệu quả. List Comprehension cho phép bạn tạo danh sách mới bằng cách kết hợp một vòng lặp và một biểu thức trong một dòng code. Nó giúp rút ngắn mã, làm cho mã dễ đọc hơn và thường nhanh hơn so với việc sử dụng vòng lặp truyền thống.
Cú pháp chung của List Comprehension có dạng:
new_list
= [expression
for item
in iterable
if condition
]
Trong đó
new_list
là danh sách mới bạn muốn tạo.expression
là biểu thức sẽ được áp dụng cho mỗi phần tử trongiterable
.item
là biến lặp qua từng phần tử trongiterable
.iterable
là dãy dữ liệu (ví dụ: danh sách, tuple hoặc chuỗi) mà bạn muốn lặp qua.condition
(không bắt buộc) là điều kiện để lọc các phần tử. Nếu điều kiện không được cung cấp, tất cả các phần tử sẽ được bao gồm trong danh sách kết quả.
Ví dụ cơ bản về List Comprehension
Hãy xem xét một ví dụ đơn giản để hiểu rõ cách List Comprehension hoạt động. Giả sử bạn muốn tạo một danh sách chứa bình phương của các số từ 0 đến 9.
Sử dụng vòng lặp:
squared_numbers = [] |
Sử dụng List Comprehension:
squared_numbers = [i**2 for i in range(10)] |
Cả hai cách đều tạo một danh sách squared_numbers
chứa các bình phương từ 0 đến 9. Tuy nhiên, List Comprehension làm cho mã ngắn hơn và dễ đọc hơn.
List Comprehension với điều kiện
Một trong những tính năng mạnh mẽ của List Comprehension là khả năng áp dụng điều kiện để lọc các phần tử của danh sách. Điều này cho phép bạn tạo danh sách mới chỉ chứa các phần tử thỏa mãn một điều kiện cụ thể.
Ví dụ, để tạo một danh sách các số chẵn từ 0 đến 9:
even_numbers = [i for i in range(10) if i % 2 == 0] |
Danh sách even_numbers
chỉ chứa các số chẵn từ 0 đến 9.
Sử dụng List Comprehension cho danh sách hai chiều
List Comprehension cũng có thể được sử dụng để tạo danh sách hai chiều hoặc danh sách lồng nhau. Điều này có nghĩa là bạn có thể tạo danh sách chứa danh sách con, tạo ma trận hoặc các cấu trúc dữ liệu phức tạp hơn.
Ví dụ, để tạo một ma trận 3x3 với tất cả giá trị ban đầu là 0:
matrix = [[0 for _ in range(3)] for _ in range(3)] |
Trong trường hợp này, chúng ta sử dụng hai vòng lặp lồng nhau để tạo danh sách lồng nhau với 3 danh sách con, mỗi danh sách con có 3 phần tử.
List Comprehension và hàm hoặc phương thức có sẵn
Chúng ta cũng có thể sử dụng các hàm hoặc phương thức khi chỉ định expression trong List Comprehension.
Ví dụ, để tạo ra một list mới với các string ở định dạng LOWER (viết thường) từ list ban đầu:
cities = ['Long An', 'Ha Noi','Nam Dinh'] |
Trong trường hợp này, chúng ta sử dụng phương thức lower() để chỉ định expression, có tác dụng chuyển chữ hoa thành chữ thường trong chuỗi python.
- Xem thêm: phương thức lower() giúp chuyển chữ hoa thành chữ thường trong chuỗi python.
List Comprehension và hàm tự tạo
Chúng ta cũng có thể tự tạo ra hàm để sử dụng trong expression của List Comprehension. Ví dụ, để tạo một list số mới có phần tử là luỹ thừa của các số trong list cũ:
numbers = list(range(11)) |
Một ví dụ khác, để tạo ra một danh sách mới chứa tên các con vật có 4 chân từ một danh sách động vật có sẵn:
list_animal = ['chó', 'mèo', 'rắn', 'voi', 'cá'] |
Trường hợp sử dụng phổ biến List Comprehension
List Comprehension thường được sử dụng trong các tình huống sau:
Biến đổi dữ liệu: Khi bạn muốn biến đổi dữ liệu từ một danh sách thành danh sách mới, ví dụ: tính toán bình phương của các số, chuyển đổi chuỗi thành chữ hoa hoặc chữ thường, …
Lọc dữ liệu: Khi bạn muốn lọc dữ liệu từ một danh sách dựa trên một điều kiện cụ thể, ví dụ: lấy ra tất cả các số chẵn, loại bỏ các giá trị trùng lặp, …
Tạo danh sách lồng nhau: Khi bạn muốn tạo danh sách chứa danh sách con hoặc ma trận hai chiều.
Điều chỉnh dữ liệu: Khi bạn muốn điều chỉnh dữ liệu trong danh sách để tạo một danh sách mới thích hợp cho một mục tiêu cụ thể, ví dụ: làm phẳng danh sách lồng nhau, biến đổi từ danh sách chuỗi thành danh sách số, …
Lợi ích của List Comprehension
List Comprehension có nhiều lợi ích:
Rút gọn mã: List Comprehension giúp rút ngắn mã, làm cho mã dễ đọc hơn và tối ưu hóa thời gian viết mã.
Tốc độ nhanh hơn: Trong nhiều trường hợp, List Comprehension có thể nhanh hơn so với việc sử dụng vòng lặp truyền thống.
Code ngắn gọn và sáng sủa: List Comprehension giúp giảm độ phức tạp của mã và tạo ra code sáng sủa hơn.
Dễ đọc và hiểu: Cú pháp của List Comprehension khá đơn giản, dễ đọc và hiểu, đặc biệt với những người mới học lập trình.
Tuy nhiên, cần lưu ý rằng List Comprehension không phải lúc nào cũng là lựa chọn tốt nhất. Trong một số trường hợp, việc sử dụng vòng lặp truyền thống hoặc các phương thức khác có thể thích hợp hơn, đặc biệt khi bạn cần xử lý logic phức tạp hơn hoặc cần can thiệp vào từng bước của quá trình biến đổi dữ liệu.
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về List Comprehension trong Python rồi. List Comprehension là một công cụ mạnh mẽ và tiện lợi trong Python, giúp bạn tạo danh sách mới dễ dàng và hiệu quả. Việc sử dụng List Comprehension giúp rút ngắn mã, tối ưu hóa thời gian viết mã, và làm cho mã của bạn trở nên dễ đọc hơn. Nó là một phần quan trọng của ngôn ngữ lập trình Python và nên được sử dụng một cách thông minh trong các dự án lập trình của bạn.
URL Link
HOME › python cơ bản - lập trình python cho người mới bắt đầu>>10. list trong python