Hướng dẫn list comprehension trong Python | Laptrinhcanban.com

HOME › >>

Hướng dẫn list comprehension trong Python

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ử trong iterable.
  • item là biến lặp qua từng phần tử trong iterable.
  • 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 = []
for i in range(10):
squared_numbers.append(i**2)

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']
lower_cities = [city.lower() for city in cities]

print(lower_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.

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))

#Tự tạo một hàm tính lũy thừa.
def tim_luy_thua(number):
return number ** 2

#Sử dụng list comprehension với hàm vừa tạo.
new_numbers = [tim_luy_thua(numbers) for numbers in numbers]

print(new_numbers)
#>[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

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á']

##Tự tạo một hàm tìm thú bốn chân
def tim_thu_bon_chan (animal):
if animal in ['chó', 'mèo','voi']:
return animal

#Sử dụng list comprehension với hàm vừa tạo.
thu_bon_chan = [animal for animal in list_animal if tim_thu_bon_chan(animal)]

print(thu_bon_chan)
#>['chó', 'mèo', 'voi']

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:

  1. 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, …

  2. 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, …

  3. 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.

  4. Đ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:

  1. 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ã.

  2. 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.

  3. 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.

  4. 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

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/list-trong-python/list-comprehension-trong-python/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.