Sử dụng list comprehension trong Python | Laptrinhcanban.com

Sử dụng 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ì

List comprehension trong Python hay còn gọi là phương pháp viết nội hàm là một phương pháp đặc biệt chỉ có trong python mà không có trong bất kỳ ngôn ngữ nào khác, giúp bạn có thể tạo list trong python một cách cực kỳ đơn giản.

Khi làm việc với list, sẽ có những lúc bạn cần phải thao tác với những list có cấu trúc phức tạp, mà với phương pháp tạo list thông thường, bạn sẽ cần rất nhiều dòng code để có thể khởi tạo được chúng.

Nhưng những nhà sáng lập ra python với tôn chí python là Đơn giản thì tốt hơn phức tạp, đã tạo ra list comprehension-phương pháp đặc biệt chỉ python mới có, nhằm giúp bạn có thể rút gọn các dòng code cần thiết và tạo ra một list phức tạp chỉ trong nháy mắt.

Ngoài khả năng rút gọn các dòng code cần viết, tốc độ xử lý của phương pháp list comprehension trong Python cũng được cho là nhanh hơn các phương pháp khác.

Sử dụng list comprehension để tạo list trong Python

Cú pháp list comprehension trong python

Như ở phần định nghĩa Kiyoshi đã nói qua, chúng ta sử dụng list comprehension trong python chủ yếu để tạo list trong python.

List comprehension không những giúp chúng ta tạo ra các list đơn giản, mà còn có thể tạo ra các list đa chiều có cấu trúc phức tạp mà với các phương pháp tạo list thông thường, bạn cần rất nhiều xử lý để hoàn thành được nó.

Chúng ta sử dụng list comprehension trong Python để tạo list với cú pháp sau đây:

[expression for variable in iterable]

Trong đó:

  • iterable là một đối tượng chứa nhiều phần tử trong python, ví dụ như một list, tuple, range hay set.
  • variable là một biến để gán giá trị phần tử lấy ra từ iterable.
  • expression là một biểu thức để tính toán với biến variable.

Về quy trình xử lý:

  1. Chúng ta dùng lệnh for để lấy ra lần lượt các phần tử có trong iterable và gán giá trị phần tử đó vào biến variable.
  2. Chúng ta dùng biểu thức expression để tính toán với biến variable và đưa ra một kết quả.
  3. Kết quả trên được dùng để tạo một phần tử trong list mới.

Hãy cùng xem một số ví dụ về cách sử dụng list comprehension để tạo list trong Python sau đây.

Ví dụ cụ thể về sử dụng list comprehension trong python

Tạo một list gồm các số từ 1 đến 5

Cách thông thường:

old_list = list(range(0,6))
comprehension_list = []

for phantu in old_list:
comprehension_list.append(phantu)

Sử dụng list comprehension trong python:

comprehension_list = [number for number in range(0,6)]

Cả hai đều đưa ra cùng kết quả:

print(comprehension_list)
#>>[0, 1, 2, 3, 4, 5]

Bạn thấy đó, cùng một kết quả nhưng với việc sử dụng list comprehension đã giúp chúng ta rút gọn code, giảm đi bao nhiêu là công sức rồi đấy.

Tạo một list có phần tử là bình phương các số từ 1 đến 5

Cách thông thường:

old_list = list(range(0,6))
comprehension_list = []

for phantu in old_list:
phantu_moi = phantu**2
comprehension_list.append(phantu_moi)

Sử dụng list comprehension trong python:

comprehension_list = [number**2 for number in range(0,6)]

Cả hai đều cho ra cùng kết quả:

print(comprehension_list)
#>> [0, 1, 4, 9, 16, 25]

Cho một list gồm các string khác nhau, tạo ra một list mới với các string ở định dạng LOWER (viết thường)

Để giải quyết bài toán này, chúng ta cần kết hợp phương thức lower() giúp chuyển chữ hoa thành chữ thường trong chuỗi python.

Chúng ta sử dụng list comprehension trong python như sau:

list_thanhpho = ['Long An', 'Ha Noi','Nam Dinh']
list_thanhpho_thuong = [thanhpho.lower() for thanhpho in list_thanhpho]

print(list_thanhpho_thuong)
#>> ['long an', 'ha noi', 'nam dinh']

Bạn có thể thấy với cách viết thông thường, biểu thức càng phức tạp thì số dòng chúng ta cần code sẽ lại càng tăng lên.
Thế nhưng với list comprehension, bạn cũng chỉ cần một dòng code thôi là giải quyết được vấn đề rồi đó.
IT’S SO COOL

Sử dụng hàm tự tạo trong List comprehension python

Ở phần trên chúng ta đã dùng các hàm tích hợp sẵn trong python như lower,upper, cộng trừ nhân chia v.v… trong các biểu thức tính toán.
Ngoài cách dùng hàm tích hợp sẵn, bạn cũng có thể sử dụng hàm tự tạo để chỉ định biểu thức tính toán trong List comprehension python giống như ví dụ sau đây:

Cho một list số nguyên. Hãy tạo một list số mới có phần tử là luỹ thừa của các số trong list cũ

list_số = list(range(11))

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

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

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

Cho danh sách tên các con vật, tạo ra một danh sách mới chứa tên các con vật có 4 châ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']

Sử dụng list comprehension trong Python kèm với hàm IF

Chúng ta cũng có thể sử dụng list comprehension trong Python kèm với hàm điều kiện IF.
Lúc này, chỉ khi nào biểu thức điều kiện của hàm if đúng, thì vòng lặp for mới được chạy để tạo phần tử cho list mới.
Cú pháp viết sẽ như sau đây:

[expression for variable in iterable if if_expression]

Trong đó:

  • iterable là một đối tượng chứa nhiều phần tử trong python, ví dụ như một list, tuple, range hay set.
  • variable là một biến để gán giá trị phần tử lấy ra từ iterable.
  • if_expression là biểu thức điều kiện để xét có tiếp tục thực hiện vòng lặp for hay không.
  • expression là một biểu thức để tính toán với biến variable.

Về quy trình xử lý:

  1. Chúng ta dùng lệnh for để lấy ra lần lượt các phần tử có trong iterable và gán giá trị phần tử đó vào biến variable.
  2. Kiểu tra biểu thức điều kiện if_expression, nếu True thì tiến hành tiếp vòng lặp for. Nếu False thì bỏ qua vòng lặp.
  3. Nếu if_expression là true, dùng biểu thức expression để tính toán với biến variable và đưa ra một kết quả.
  4. Kết quả trên được dùng để tạo một phần tử trong list mới.

Hãy cùng xem ví dụ cụ thể sau đây:

Tạo một list mới chứa các số chẵn từ một list số ban đầu

numbers = [0,1,2,3,4,5,6,7,8]
even_numbers = [num for num in numbers if num % 2 ==0]

Bạn có thể kết hợp tạo list bằng hàm range và viết ví dụ trên cực ngắn như sau:

even_numbers = [num for num in list(range(9)) if num % 2 ==0]

Cả hai đều đưa ra cùng một kết quả:

print(even_numbers)
#>> [0, 2, 4, 6, 8]

Tổng kết và thực hành

List comprehension trong Python là một cách viết đặc biệt của python, do đó nếu bạn chưa quen với cách viết này thì có thể cảm thấy khó hiểu đấy. Nhưng một khi đã quen rồi, Kiyoshi đảm bảo bạn sẽ nghiện nó luôn đấy và không còn muốn viết theo cách phổ thông nữa đâu.
Với những lợi thế về khả năng xử lý cũng như khả năng rút gọn code, bạn sẽ có cơ hội gặp cách viết này nhiều trong các dự án viết bằng python. Thế nên trăm hay không bằng tay quen, hãy làm chủ List comprehension trong Python bằng cách thực hành lại các ví dụ ngày hôm nay đi nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

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.